C# 在不使用 DateTimeOffset 的情况下将字符串转换为 DateTime

C# Converting string to DateTime without using DateTimeOffset

我正在尝试将 Facebook 活动引入我的网站。他们将来自不同地区。例如,事件发生在东部时间(与 UTC 相差 -4 小时),而我的本地时间是中部时间(与 UTC 相差 -5 小时)。 我从控制台应用程序调用他们的图表 API。我得到这样的事件日期:

// get event items
me = fbClient.Get(url);
var startTime = me["start_time"];
var endTime = me["end_time"];

开始时间显示:“2017-04-30T13:00:00-0400”对象{string}

当我尝试将该字符串转换为 DateColumn 类型时,它会将输出时间更改为: var dateTime = Convert.ToDateTime(startTime); {4/30/2017 12:00:00 下午}

它把小时从 13 改成了 12,我如何使用 DateTime 而不是使用 DateTimeoffset 将字符串转换为日期?

这个例子展示了如何使用 DateTimeOffset 来实现,但我需要我的 DateTime 类型?

您可以使用 DateTimeOffsetDateTime 属性,就像您提供的 link 中接受的答案一样。

或者,如果您真的喜欢用DateTime来做,您可以从字符串中删除时区:

var dt = DateTime.ParseExact(startTime.Substring(0,19), 
                              "yyyy-MM-ddTHH:mm:ss", 
                              CultureInfo.InvariantCulture);