簡體   English   中英

將不帶分隔符的純字符串轉換為格式為“dd.MM.yyyy HH:mm:ss.fff z”的日期

[英]Convert plain string without seperator to date with format 'dd.MM.yyyy HH:mm:ss.fff z'

我的日期時間string表示是"20181230183000000" ,我無法將轉換DateTime

DateTimeOffset.ParseExact(DOCDate, "dd.MM.yyyy HH:mm:ss.fff z", CultureInfo.InvariantCulture

好吧,實際格式模式應該匹配:您當前的輸入

 20181230183000000

方法

 yyyyMMddHHmmssfff

代表yearmonthdayhoursminutessecondsseconds fractions of second全部帶有前導零沒有任何分隔符

代碼:

  string DOCDate = "20181230183000000";

  DateTimeOffset result = DateTimeOffset.ParseExact(
    DOCDate, 
    "yyyyMMddHHmmssfff", 
    CultureInfo.InvariantCulture, 
    DateTimeStyles.AssumeUniversal); // Since you've mentioned 'z' in the question

我們來看一下

 Console.Write(result.ToString(CultureInfo.InvariantCulture));

結果:

  12/30/2018 18:30:00 +00:00

DateTime類似代碼:

  DateTime result = DateTime.ParseExact(
    DOCDate, 
    "yyyyMMddHHmmssfff", 
    CultureInfo.InvariantCulture, 
    DateTimeStyles.AssumeUniversal); // Since you've mentioned 'z' in the question

最后,如果您想以某種格式表示DateTimeOffset ( DateTime ),請使用ToString()方法:

  Console.Write(result.ToString("dd.MM.yyyy HH:mm:ss.fff' z'"));

你可以試試:

var dateTimeString = "20181230183000000";
DateTimeOffset dto;
if (DateTimeOffset.TryParseExact(dateTimeString, "yyyyMMddHHmmssfff", 
                                 CultureInfo.InvariantCulture, 
                                 DateTimeStyles.AssumeUniversal |
                                 DateTimeStyles.AdjustToUniversal, out dto))

{
     Console.WriteLine(dto);
}

這是一篇關於使用 DateTimeOffset、DateTime 而不是 TimeZoneInfo 的好帖子

DateTime.Parse("2012-09-30T23:00:00.0000000Z") 總是轉換為 DateTimeKind.Local

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM