如何从已针对UTC调整的字符串创建DateTime var?我在设置为BST(GMT + 1)的机器上运行它。如果我运行以下代码行:
DateTime clientsideProfileSyncStamp = Convert.ToDateTime("20-May-2011 15:20:00");
然后在对数据库保存(UTC)值的测试中使用该值,然后看起来Convert.ToDateTime()实际上给我的UTC值为14:20。我不希望它进行转换 - 我只是希望它接受我的DateTime字符串已经是UTC。
感谢。
答案 0 :(得分:17)
解析字符串,并指定在字符串中没有指定时区时它应该采用UTC时间:
DateTime clientsideProfileSyncStamp =
DateTime.Parse(
"20-May-2011 15:20:00",
CultureInfo.CurrentCulture,
DateTimeStyles.AssumeUniversal
);
答案 1 :(得分:11)
答案 2 :(得分:2)
在DateTime字符串中添加Z
:
DateTime clientsideProfileSyncStamp = Convert.ToDateTime("20-May-2011 15:20:00Z");
Console.Write(clientsideProfileSyncStamp.ToUniversalTime()); // 20-May-2011 15:20:00
答案 3 :(得分:1)
不要忘记允许您在没有异常的情况下处理解析错误的TryParse
变体
DateTime clientsideProfileSyncStamp;
DateTime.TryParse(
"20-May-2011 15:20:00",
System.Globalization.CultureInfo.CurrentCulture,
System.Globalization.DateTimeStyles.AssumeUniversal,
out clientsideProfileSyncStamp
);
此外,如果您未使用ParseExact
或TryParseExact
,则会假设输出Kind
为Local
,因此您可能还想使用ToUniversalTime()
clientsideProfileSyncStamp.ToUniversalTime();
答案 4 :(得分:0)
DateTime.Parse()
或DateTime.TryParse()
var clientsideProfileSyncStamp = DateTime.Parse("20-May-2011 15:20:00");