2014-01-17 129 views

回答

3

有了這樣一個字符串 「2014-01-17T09:59:24.000Z」

你可以使用DateTime.Parse("2014-01-17T09:59:24.000Z")

The Documentation

要解析的字符串可以採用以下任意形式:

一個字符串,包含時區信息並符合ISO 8601。在下面的例子中,第一個字符串指定協調世界時(UTC),第二個字符串指定的時間,這比UTC早7小時時區:

2008-11-01T19:35:00.0000000Z 

2008-11-01T19:35:00.0000000-07:00 
+0

這工作完美! – Pramod

3

DateTime.ParseExact

使用指定的格式和區域性特定 格式信息的日期和時間其 日期時間等效的指定字符串表示形式轉換。 字符串表示的格式必須完全匹配 指定的格式。

顯然你的字符串表示和格式是不一樣的。

你可以像使用它;

var date = DateTime.ParseExact("2014-01-17T09:59:24.000Z", 
           "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", 
           CultureInfo.InvariantCulture); 
Console.WriteLine(date); 

輸出將;

1/17/2014 9:59:24 AM 

這裏一個demonstration

欲瞭解更多信息,請看看;

0

你擁有的價值,2014-01-17T09:59:24.000ZISO8601/RFC3339格式化的時間戳。最後的Z是重要的,這意味着它代表UTC。

你有兩種選擇正確解析它:

  • 你可以把它解析爲DateTimeDateTimeKind.Utc爲它的.Kind屬性:

    DateTime dt = DateTime.ParseExact("2014-01-17T09:59:24.000Z", 
                "yyyy-MM-dd'T'HH:mm:ss.fffK", 
                CultureInfo.InvariantCulture, 
                DateTimeStyles.RoundtripKind); 
    
  • 或者,你可以解析它到一個DateTimeOffset,其中UTC將對應於零的偏移量:

    DateTimeOffset dt = DateTimeOffset.ParseExact("2014-01-17T09:59:24.000Z", 
                   "yyyy-MM-dd'T'HH:mm:ss.fffK", 
                   CultureInfo.InvariantCulture); 
    

這裏的某些其他的答案是接近,但都忘記實際上考慮Z在字符串中使用K符和DateTimeStyles.RoundtripKind參數。這些都很重要,因爲沒有它們,您可能會得到結果DateTime,它具有DateTimeKind.Unspecified,在某些時區轉換功能中可能會將其視爲本地時間。如果您使用我給予您的選項中的任何一個,則保留Z的含義。