繁体   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