通过更改字符串值输入强制DateTime.TryParse为UTC

时间:2017-06-06 10:50:38

标签: c# datetime

我有一个配置文件,要求以特定格式提供日期:

"StartDate": "2017-05-27"

此编号的用法如下:

DateTime startDate;
DateTime.TryParse(MyConfig.StartDate, out startDate);

我意识到当这个在不同时区的服务器上运行时,返回的DateTime可能不是UTC类型,因此对该DateTime的进一步操作,如Ticks或其他东西,可能导致时间可能变得偏斜。 / p>

DateTime startDate;
DateTime.TryParse("2017-05-27", out startDate);

if(startDate.Kind == DateTimeKind.Utc)
{
    "Ohhh yeah".Dump();
}
else
{
    "EH OH".Dump();
}

startDate.Dump();

如果我将字符串更改为"2017-05-27Z",则不会强制它为DateTimeKind.Utc ...因为它仍会输出" EH OH" 但有趣的是,startDate.Dump()输出的时间确实改变了一个小时,但它的种类并没有改变:(。

如何强制将配置字符串正确解析为UTC DateTime? (不改变TryParse代码,我知道它有一个类型说明符) - 这可能是不可能的,但这就是问题......是吧:)

0 个答案:

没有答案