输出日期时间格式

时间:2014-11-28 12:31:19

标签: c# string datetime

以下代码应输出2016年11月18日。 第一个消息框输出2016年11月18日 第二个消息框错误地输出 2016年1月18日

第一个if语句中的代码是否正确,或者我是否也应用不同的格式。我正好在测试时注意到这个问题。

DateTime Output;
string Input = "2016/11/18";


if (DateTime.TryParseExact(Input, "yyyy/MM/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out Output))
{
 MessageBox.Show(Output.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture));
}


if (DateTime.TryParseExact(Input, "yyyy/mm/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out Output))
{
MessageBox.Show(Output.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture));
}

1 个答案:

答案 0 :(得分:5)

mm specifier分钟。 MM specifier已有好几个月了。

您在第二个TryParseExact方法中使用了错误的格式说明符。

由于您未指定yyyy/mm/dd格式的月份部分,因此默认情况下为1,即Gregorian calender中的1月。

例如,您的第一个Output将是;

18/11/2016 00:00:00

这就是为什么

Output.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture)

生成18-Nov-2016

<强>但

你的第二个Output将是;

18/01/2016 00:11:00

这就是为什么

Output.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture)

生成18-Jan-2016