日期时间转换,以毫秒和时区

时间:2016-11-27 22:57:07

标签: c# datetime

我发现很多关于从各种格式解析日期时间的问题,但是无法找到解决我的转换日期时间字符串的问题的解决方案,包括毫秒和时区。

我的输入就像

  

20110713014230.685 + 0000

这种格式就像:

  

yyyyMMddHHmmss.fff + ZZZZ

我尝试使用/不使用+.的DateTime.ParseExact和DateTimeOffset.ParseExact,但没有任何效果。

发现类似的问题Here,但它不适合我。

我得到了例外

  

未处理的类型' System.FormatException'发生在mscorlib.dll

3 个答案:

答案 0 :(得分:3)

将格式更改为yyyyMMddHHmmss.fffzzzzz,修改the documentation," zzz"自定义格式说明符表示本地操作系统时区的签名偏移量。

答案 1 :(得分:0)

DateTime date;

var dateString = "20110713014230.685+0000";

dateString = dateString.Substring(0, 21) + ':' + dateString.Substring(21, 2);

DateTime.TryParseExact(dateString, "yyyyMMddHHmmss.fffzzz", CultureInfo.InvariantCulture, DateTimeStyles.None, out date);

答案 2 :(得分:0)

使用dateTimeString = 20110713014230.685 + 0000,以下代码应可为您提供所需的信息:

if (!DateTimeOffset.TryParseExact(dateTimeString, 
                                  "yyyyMMddHHmmss.fffzzz",
                                   CultureInfo.InvariantCulture, 
                                   DateTimeStyles.None, 
                                   out var dateTimeWithOffset)){}

以下是dateTimeWithOffset var的中间输出:

{7/13/2011 1:42:30 AM +00:00}
ClockDateTime: {7/13/2011 1:42:30 AM}
Date: {7/13/2011 12:00:00 AM}
DateTime: {7/13/2011 1:42:30 AM}
Day: 13
DayOfWeek: Wednesday
DayOfYear: 194
Hour: 1
LocalDateTime: {7/12/2011 9:42:30 PM}
Millisecond: 685
Minute: 42
Month: 7
Offset: {00:00:00}
Second: 30
Ticks: 634461181506850000
TimeOfDay: {01:42:30.6850000}
UtcDateTime: {7/13/2011 1:42:30 AM}
UtcTicks: 634461181506850000
Year: 2011
_dateTime: {7/13/2011 1:42:30 AM}
_offsetMinutes: 0