【问题标题】:Output Datetime format输出日期时间格式
【发布时间】:2014-11-28 12:31:19
【问题描述】:

下面的代码应输出 2016 年 11 月 18 日。 第一个消息框输出 18-Nov-2016 第二个消息框错误地输出 18-Jan-2016

第一个 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));
}

【问题讨论】:

    标签: c# string datetime


    【解决方案1】:

    mm specifier 分钟。 MM specifier 是几个月。

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

    由于您没有在 yyyy/mm/dd 格式中指定月份部分,因此默认情况下它将是 1,即 Gregorian calender 中的一月。

    例如,您的第一个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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多