C# 解析日期时间
如何将1900-01-01 00:00:00Z解析为DateTime对象C# 解析日期时间,c#,datetime,iformatprovider,C#,Datetime,Iformatprovider,如何将1900-01-01 00:00:00Z解析为DateTime对象 string temp = "1900-01-01 00:00:00Z"; CultureInfo provider = CultureInfo.InvariantCulture; var date = DateTime.ParseExact(temp, "yyyy-MM-dd hh:mm:ssZ", provider); 这让我想起: 1899年12月31日下午7:00:
string temp = "1900-01-01 00:00:00Z";
CultureInfo provider = CultureInfo.InvariantCulture;
var date = DateTime.ParseExact(temp, "yyyy-MM-dd hh:mm:ssZ", provider);
这让我想起:
1899年12月31日下午7:00:00我猜你在东部时间。它是从时间中减去5小时。也许这是因为你打印时间的方式?试着用格林尼治标准时间打印它。或者你可以用你的本地时区来解析它。你是如何显示这个值的?我怀疑这只是把你当地的时区应用到日期上 例如,尝试打印:
date.Year
date.Kind
date.Hour
date
实际上是一个UTCDateTime
,具有正确的值
不幸的是,.NET正在隐式地为您执行时区转换,但是,.NET中的日期和时间类型仍然存在一些问题:(
另一种方法是使用DateTimeOffset
,这会使它稍微清晰一些。您可以使用此代码
DateTime a;
var dt = DateTime.TryParse("30/05/1970",out a);
默认情况下,给定的时间将调整为您机器的本地时区。
date.Kind
应反映这一点。如果您希望将时间调整为世界时(UTC),使用flag作为第四个参数,以ParseExact
时间精确地缩短了5个小时。您可能需要考虑时区。您需要为屏幕截图设置帧