当我试图使用的TryParse方法来分析"2017-09-25T11:06:55+00:00"
日期字符串,我得到下面的输出:问题与日期时间解析
{9/25/2017 7:06:55 AM}
因此,它看起来像11时许被越来越转化为上午7时不知道为什么这发生了什么?是否因为+00:00??
我需要做什么以便解析的日期时间输出是相同的:即{9/25/2017 11:06:55 AM}
?
我尝试使用当前区域/文化和日期时间样式。假设本地但没有运气。 (注:我在东部时区)
谢谢。
当我试图使用的TryParse方法来分析"2017-09-25T11:06:55+00:00"
日期字符串,我得到下面的输出:问题与日期时间解析
{9/25/2017 7:06:55 AM}
因此,它看起来像11时许被越来越转化为上午7时不知道为什么这发生了什么?是否因为+00:00??
我需要做什么以便解析的日期时间输出是相同的:即{9/25/2017 11:06:55 AM}
?
我尝试使用当前区域/文化和日期时间样式。假设本地但没有运气。 (注:我在东部时区)
谢谢。
您正在使用UTC时区(+00:00),但很明显,您或您的PC位于-04:00时区。
如果你可以使用DateTimeOffset,那么我倾向于选择它。您可以保留时区信息,并且您可以访问本对象和UTC对象的日期时间属性。
var dt = DateTimeOffset.Parse("2017-09-25T11:06:55+00:00");
Console.WriteLine(dt.DateTime); // 9-25 at 11:06
Console.WriteLine(dt.UtcDateTime); // 9-25 at 11:06
Console.WriteLine(dt.LocalDateTime); // 9-25 at 07:06
如果你知道你总是会被处理UTC,你可以通过调整万能像这样解析:
var dt = DateTime.Parse("2017-09-25T11:06:55+00:00", CultureInfo.CurrentCulture, DateTimeStyles.AdjustToUniversal);
Console.WriteLine(dt); // 9-25 at 11:06
感谢Trio.No,它并不总是UTC。所以下面的代码就可以了:DateTimeStyles styles = DateTimeStyles.AssumeLocal; const string utcIdenfitifier =“+00:00”; (date.Contains(utcIdenfitifier)) styles = DateTimeStyles.AdjustToUniversal; } 如果(DateTime.TryParse(日期,CultureInfo.CurrentCulture,样式,出retVal的)) { 返回retVal的; } – Shirish
同样,你可以使用类似这样的东西:var dto = DateTimeOffset.Parse(“2017-09-25T11:06:55 + 00:00”);返回dto.Offset == TimeSpan.Zero? dto.UtcDateTime:dto.LocalDateTime; – Trioj
当你分析它最初它是正确的值,它是刚刚调整到您的时区。你可以用ToUniversalTime
迫使它:
DateTime.Parse("2017-09-25T11:06:55+00:00").ToUniversalTime().ToString("yyyy/MM/dd HH:mm:ss tt")
输出
"2017/09/25 11:06:55 AM"
你要正确地分析UTC日期时间,并有2017年9月25日上午11时06分55秒,而不是2017年9月25日上午7:06:55。 +00:00是不正确的UTC格式,您需要将其更改为“2017-09-25T11:06:55z”。
这是一个UTC时间戳,你得到的可能是您的本地时间。通常最好将代码和数据库中的所有日期保持为UTC,并使用本地时间进行显示。 – juharr