将DateTime + TimeZone转换为UTC

时间:2011-07-06 11:35:10

标签: .net datetime timezone utc

给定DateTime对象,如何获得指定TimeZone的通用时间?我的应用程序(定时器)要求用户指定时间和时区,我需要根据指定的时间+时区值保存UTC。

例如,用户A指定
日期时间:07/06/2011 7:30 AM TimeZone:东部标准时间(-5:00)。

用户B指定:
日期时间:07/06/2011 05:00 PM TimeZone:印度标准时间(+5:30)。

我相信上述DateTime值的UTC将是相同的,并且上述两个定时器将同时发生。问题是如何让UTC保存在数据库中?我无法获得上述日期时间值的匹配UTC。

2 个答案:

答案 0 :(得分:4)

您可以将DateTimeTimeZoneInfo结合使用:

var utc = TimeZoneInfo.ConvertTimeToUtc(dateTimeAsEnteredByUser,
                                        timeZoneChosenByUser);

您需要确保Kind的{​​{1}}属性设置为dateTimeAsEnteredByUser

顺便说一句:
你指定的两次不一样。第一个是UTC时间12:30,第二个是UTC时间11:30。此外,17:00 PM不存在,可能是17:00或5:00 PM。

答案 1 :(得分:1)

转换为Utc:

DateTime utcDateTime = TimeZoneInfo.ConvertTimeToUtc(dateTime, timeZone);