我已经创建了string
扩展方法,它会将特定的string
转换为DateTimeOffset
。我执行了以下方法:
public static DateTimeOffset? ConvertToDateTimeOffset(this string text)
{
DateTimeOffset date;
if (DateTimeOffset.TryParse(text, out date))
{
return date;
}
else
{
return null;
}
}
使用此字符串:
"2010-05-10".ConvertToDateTimeOffset()
我想取回以下结果:
{2010. 05. 10. 0:00:00 +00:00}
但我的执行方法调用的实际结果是(请注意+02:00
):
{2010. 05. 10. 0:00:00 +02:00}
如何消除此时区问题?
答案 0 :(得分:3)
如果您想要 UTC ,而不是本地时间,则必须使用DateTimeStyles.AssumeUniversal
手动指定
...
if (DateTimeOffset.TryParse(text,
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal,
out date)) {
...
}
...
您可以使用out var
:
public static DateTimeOffset? ConvertToDateTimeOffset2(this string text) {
return DateTimeOffset.TryParse(text,
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal,
out var date)
? date
: (DateTimeOffset?) null;
}
答案 1 :(得分:0)
选中link。
我相信你正在寻找
DateTimeOffset.TryParse(text, null, DateTimeStyles.AssumeUniversal, out date);
根据文件
Indicates that, if the input parameter lacks an <Offset> element, the UTC offset (00:00) should be provided.