C# 将日期时间字符串转换为正确的日期时间值时出现问题

C# 将日期时间字符串转换为正确的日期时间值时出现问题,c#,datetime,asp.net-core,C#,Datetime,Asp.net Core,我从一个API收到一个datetime字符串,我正试图将其转换为datetime变量,但当我做相反的操作时,它总是给我错误的时间 以下是我从api获得的一个值: 2020-04-21T21:44:34Z 我试着把它恢复为4/21/2020 9:44:34,但它一直给我4/21/2020 4:44:34。分钟、秒和日期是正确的 我试过 DateTime startTimeStr = Convert.ToDateTime("2020-04-21T21:44:34Z") 。。。及 DateTime

我从一个API收到一个datetime字符串,我正试图将其转换为datetime变量,但当我做相反的操作时,它总是给我错误的时间

以下是我从api获得的一个值:

2020-04-21T21:44:34Z
我试着把它恢复为4/21/2020 9:44:34,但它一直给我4/21/2020 4:44:34。分钟、秒和日期是正确的

我试过

DateTime startTimeStr = Convert.ToDateTime("2020-04-21T21:44:34Z")
。。。及

DateTime startTimeStr = DateTime.Parse("2020-04-21T21:44:34Z");
两者都给我下午4点而不是9点的时间。

试着打电话。ToUniversalTime关于你的解析结果:

DateTime startTimeStr = DateTime.Parse("2020-04-21T21:44:34Z").ToUniversalTime();
或在相应的重载上指定DateTimeStyles.AdjustToUniversal:

DateTime startTimeStr = DateTime.Parse("2020-04-21T21:44:34Z", null, DateTimeStyles.AdjustToUniversal);

没有DateTime.Parse解析DateTime并将其调整为您的本地时区检查DateTime.Kind属性将为您提供DateTimeKind.local。

@David您居住在哪个时区?帮助中的注释(即AdjustToUniversal)有吗。成功了。谢谢@大卫很乐意帮忙!如果对您有效,请将回答标记为接受绿色检查图像=