如何在 C# 中将日期时间从 SQL 转换为 UTC 时间?

How to convert datetime from SQL to UTC time in C#?

日期在 SQL 数据库中存储为 datetime 数据类型。通过ADO.NET读取这个日期后,如何将收到的DateTime转换为UTC时间?我的本地时间是美国东部时间。

例如 1:30 EST 下午(存储在 SQL 数据库中)必须是 6:30 UTC 下午。

如果所有记录都基于美国东部标准时间时区,那么您可以这样做:

DateTime dtFromSqlServer = new DateTime(2017,03,28); //GET field from DB
TimeZoneInfo tzInfo = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var output = TimeZoneInfo.ConvertTimeToUtc(dtFromSqlServer, tzInfo);

我以前用过 DateTime.ToUniversalTime

DateTime dateEst = new DateTime(2017, 03, 28, 1, 30, 0); // This is where you'd pulled the DateTime value from your database.
DateTime dateUtc = dateEst.ToUniversalTime();

相比之下,您可以使用 DateTime.ToLocalTime 恢复到原始值。

请注意这些考虑了现在的 DST,这就是为什么这给了我 5:30,而不是 6:30...