ASP.NET 日期时间未正确转换



我这里有这个日期:

DateTime RelevantDate = new DateTime(2017, 11, 13, 16, 0, 0, 0);
            request.RelevantDate = Convert.ToDateTime(RelevantDate.ToString("o"));

我期待:

2017-11-13T16:00:00-05:00

相反,我得到的是:

2017-11-13T16:00:00

这真的需要采用这种格式:2017-11-13T16:00:00-05:00,我该怎么做? 请求。相关日期期待日期时间

如果我这样做:

request.RelevantDate = Convert.ToDateTime(DateTime.Now.ToString("o"));

它给了我正确的格式:

2017-11-08T06:43:39-05:00

如果你使用这个构造函数创建一个DateTime,它的Kind属性是Unspecified,即它既不是本地的也不是UTC。

DateTime.Now返回一个带有 DateTimeKind.Local 的对象,这就是为什么时区被添加到 .ToString("o") 的输出中的原因。

您可以使用另一个构造函数,您可以在其中显式将类型设置为 Local ,例如 new DateTime(2017, 11, 13, 16, 0, 0, 0, DateTimeKind.Local) .

这样,时区将出现在.ToString("o")的输出中。

如果要在日期时间格式的字符串中查看时区信息,则需要指定时区。

您可以使用此方法。请看一下:

如果要使用本地时区

DateTime RelevantDate = new DateTime(2017, 11, 13, 16, 0, 0, 0);
var DateTimeWithZone = TimeZoneInfo.ConvertTime(RelevantDate, TimeZoneInfo.Local);

如果要使用自定义时区

DateTime RelevantDate = new DateTime(2017, 11, 13, 16, 0, 0, 0);
TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById("Central Europe Standard Time");
var DateTimeWithZone = TimeZoneInfo.ConvertTime(RelevantDate, timeZone);

最新更新