输出日期时间格式

use*_*082 -5 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));
}
Run Code Online (Sandbox Code Playgroud)

Son*_*nül 5

mm分钟的说明符.MM说明符是几个月.

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

由于您未指定yyyy/mm/dd格式的月份部分,因此1默认情况下是格里高利日历中的 1月份.

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

18/11/2016 00:00:00
Run Code Online (Sandbox Code Playgroud)

这就是原因

Output.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

生成18-Nov-2016作为结果

你的第二个Output将是;

18/01/2016 00:11:00
Run Code Online (Sandbox Code Playgroud)

这就是原因

Output.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

生成18-Jan-2016作为结果.