【问题标题】:C# DateTime Conversion from yyyy-MM-ddTHH:mm:ss to dd MMM yyyyC# DateTime 从 yyyy-MM-ddTHH:mm:ss 转换为 dd MMM yyyy
【发布时间】:2013-11-20 07:55:52
【问题描述】:

如何将“yyyy-MM-ddTHH:mm:ss”转换为“dd MMM yyyy”格式?例如,我想将 2013-04-16 05:30:05 转换为 2013 年 4 月 16 日。实现此目的的正确方法是什么?

【问题讨论】:

  • 这两个都是文本表示,你有DateTime对象还是yyyy-MM-ddTHH:mm:ss格式的字符串?

标签: c#


【解决方案1】:

ParseExact,然后ToString(我假设你有字符串对象,如果你有日期时间对象,跳过第一行)

var dateTime = DateTime.ParseExact(yourDateString, "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);

var yourNewString = dateTime.ToString("dd MMM yyyy");

请注意,您在调试器中看到的DateTime 表示取决于您当前的文化。

【讨论】:

    【解决方案2】:

    首先,DateTime 没有格式。但是,如果您已经有一个表示DateTime 格式为yyyy-MM-ddTHH:mm:ss 的字符串,并且您想将其转换为格式为dd MMM yyyy 的字符串日期,则需要先将其解析为DateTime

    因此使用DateTime.ParseExact:

    DateTime dt = DateTime.ParseExact("2013-04-16 05:30:05", "yyyy-MM-dd HH:mm:ss", null); 
    

    现在你可以使用DateTime.ToString:

    string result = dt.ToString("dd MMM yyyy");
    

    请注意,如果您想使用另一个 DateTimeFormat 解析,则需要将不同的 CultureInfo 对象传递给 ParseExact/ToString(例如,强制使用英文月份名称而不是德语:dt.ToString("dd MMM yyyy", CultureInfo.InvariantCulture)) .

    【讨论】:

      【解决方案3】:

      正如其他人提到的,DateTime 没有格式。要将字符串文字解析为 Date,您需要调用 DateTime.Parse(如果字符串是特定于文化的格式)或 DateTime.ParseExact,如果您需要传递格式字符串。

      格式可以是自定义格式,如yyyy-MM-dd HH:mm:ssstandard format strings 之一,例如。 syyyy-MM-ddTHH:mm:ss

      2013-04-16 05:30:05不是在标准格式之一,所以你必须通过传递自定义格式字符串来解析:

          var dt = DateTime.ParseExact("2013-04-16 05:30:05", "yyyy-MM-dd HH:mm:ss", null);
      

      另一方面,yyyy-MM-ddTHH:mm:sss 标准格式,所以你可以写:

          var dt = DateTime.ParseExact("2013-04-16T05:30:05", "s", null);
      

      【讨论】:

        猜你喜欢
        • 2016-12-25
        • 1970-01-01
        • 2012-09-12
        • 1970-01-01
        • 1970-01-01
        • 2023-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多