将ISO日期时间格式设置为2014年3月12日12:00:00

时间:2014-03-20 01:39:49

标签: c# date time format

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

感谢。

4 个答案:

答案 0 :(得分:0)

您无法使用普通的DateTime.Parse方法解析它,

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

答案 1 :(得分:0)

 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. 

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您要做的是将输入字符串解析为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);
 }