如果我不知道源日期格式,请将日期转换为特定格式

时间:2014-03-27 11:42:35

标签: c# datetime datetime-format

我想将日期转换为特定格式(例如en-US MM / dd / yyyy),我知道解析它的正常方法。

但在我的情况下,我并不知道源日期格式。源日期格式可能会根据服务器环境进行更改。它可以是en-US或en-GB。

e.g。 DateTime dt = DateTime.Now;

'dt'可以是'27/03/2014''03/27/2014'

如果我不知道源日期格式,如何转换源日期为 en-US 格式

字符串格式没问题 - MM / dd / yyyy ,例如"03/27/2014")。

6 个答案:

答案 0 :(得分:1)

如果您不知道源格式,则在尝试转换时可能会出错。例如,尝试转换:

05/01/2013

在这种情况下,计算机无法识别日期。它可能会产生两个输出:05 Jan, 201301 May, 2013

答案 1 :(得分:0)

DateTime.Now.toString("yyyy-MM-dd"); //toString(specify format)

尝试这个

答案 2 :(得分:0)

DateTime result;
if (!DateTime.TryParseExact(inputString, "dd/MM/yyyy", out result)
    result = DateTime.ParseExact(inputString, "MM/dd/yyyy");

OR

DateTime result;
if (!DateTime.TryParse(inputString, out result)
    result = DateTime.ParseExact(inputString, CultureInfo.InvariantCulture, DateTimeStyles.None);

答案 3 :(得分:0)

如果您知道您的环境永远是决定性因素,为什么不直接使用它?

尝试以下一些变体:

string yourFormat = ... // Whatever is your default format

if(Thread.CurrentThread.CurrentCulture.Name == "en-US")
{
     yourFormat = "MM/dd/yyyy";
}
else (if Thread.CurrentThread.CurrentCulture.Name == "en-GB")
{
     yourFormat = "dd/MM/yyyy";
}

DateTime d = DateTime.ParseExact(inputString, yourFormat, null)

答案 4 :(得分:0)

  

如果我不知道源日期格式,如何将源日期转换为en-US格式?

您需要知道源日期格式,然后才能将其转换为所需的日期格式。

正如wiero在评论中正确地说的那样“如果你有01/02/2014取决于2月1日或1月2日。你必须知道如何阅读它。”

DateTime.Now返回的对象的默认格式将是您在服务器设置中指定的格式,请查看以下屏幕截图: enter image description here

enter image description here

答案 5 :(得分:0)

参考@ DarkWanderer的评论:

DateTime对象与格式无关。

只需要使用ToString("MM/dd/yyyy")将其转换为特定格式。

我使用Parse()方法进行转换但不起作用。 B ToString()方法肯定是一种方式。

这将有效:dt.Tostring("MM/dd/yyyy");

感谢@DarkWanderer。