【问题标题】:Format ISO datetime to March 12th, 2014 12:00:00将 ISO 日期时间格式化为 2014 年 3 月 12 日 12:00:00
【发布时间】:2014-04-26 15:18:16
【问题描述】:

如何将 ISO 日期(20140312120000 或 2014-03-12 12:00:00)转换为“2014 年 3 月 12 日 12:00:00”?

谢谢。

【问题讨论】:

    标签: c# date time format


    【解决方案1】:

    不能用普通的 DateTime.Parse 方法解析,

    DateTime.ParseExact(date, "yyyyMMdd''HHmmss", CultureInfo.InvariantCulture)
    

    【讨论】:

    • 这给了我一个 System.FormatException 说格式字符串无效。我正在测试 Mono,所以它可能是 Mono 的限制。
    • "字符串未被识别为有效的日期时间"
    • 问题是字符串中的'T' -- 删除它。您的字符串不是 ISO 日期/时间,因为它缺少“T”。
    • @RichardSchneider 谢谢
    • 我尝试了@RichardSchneider 的方法并且它有效,但它没有给我想要的结果。 (2014 年 3 月 19 日晚上 21:50:44 而不是 2014 年 3 月 19 日晚上 21:50:44)
    【解决方案2】:
     DateTime thisDate1 = new DateTime(2014, 3, 12);
    Console.WriteLine("Today is " + thisDate1.ToString("MMMM dd, yyyy") + ".");
    // The example displays the following output: 
    //    Today is March 12, 2011. 
    

    【讨论】:

    • 我也需要时间。
    • 他需要的是转换ISO!
    • {MMMM/dd/yy H:mm:ss zzz}
    • 就像@Sajeetharan 所说,我需要将其从 ISO 格式转换。
    • 这可能很复杂,并且有很多当前的答案,例如,您是否在 stackoverflow.com/questions/3556144/… 中查看过
    【解决方案3】:

    我是这样解决的:DateTime.Parse(isodate).ToString("MMMM dd, yyyy HH:mm:ss")。

    【讨论】:

      【解决方案4】:

      您要做的是将输入字符串解析为DateTime,然后将其转换为您想要的形式。 ParseExactToString 方法可以完成这项工作。

      public string MyFromat(string s)
      {
          var inputForms = new string[] 
          { 
             "yyyyMMdd''HHmmss", 
             "yyyy-MM-dd' 'HH':'mm':'ss"
          };
          var time = DateTime.ParseExact(s, inputForms, , CultureInfo.InvariantCulture);
          return time.ToString(""MMMM dd, yyyy HH':'mm':'dd", , CultureInfo.InvariantCulture);
      }
      

      您的两个示例表单不是ISO。如果要解析 ISO 日期时间,请使用 DateTimeOffset 表示时间并使用以下输入形式:

              static readonly string[] Iso8061DateTimeForms = new string[]
              {
                     "yyyyMMdd'T'HHmmss",
                     "yyyyMMdd'T'HHmmss'Z'",
                     "yyyyMMdd'T'HHmmsszzz",
                     "yyyyMMdd'T'HHmmss'.'fffffff",
                     "yyyyMMdd'T'HHmmss'.'fffffff'Z'",
                     "yyyyMMdd'T'HHmmss'.'fffffffzzz",
                     "yyyy'-'MM'-'dd'T'HH':'mm':'ss",
                     "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'",
                     "yyyy'-'MM'-'dd'T'HH':'mm':'sszzz",
                     "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff",
                     "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff'Z'",
                     "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz",
              };
      

      解析 ISO 8061 时间的完整实现是:

       public static DateTimeOffset ParseIso8061Time(string s)
       {
          var styles = DateTimeStyles.AllowWhiteSpaces |
              (s.EndsWith("Z") 
                 ? DateTimeStyles.AssumeUniversal 
                 : DateTimeStyles.AssumeLocal);
          return DateTimeOffset.ParseExact(s, Iso8061DateTimeForms,
              CultureInfo.InvariantCulture, styles);
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-13
        • 1970-01-01
        • 1970-01-01
        • 2016-01-24
        • 1970-01-01
        • 1970-01-01
        • 2012-04-12
        • 1970-01-01
        相关资源
        最近更新 更多