我这里有这个日期:
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);