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)
您在第二种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作为结果.
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |