.NET: Getting UTC DateTime from date with GMT offset
我有四个整数:
- 每月的日子(1 - 31)
- 一年中的一个月(1 - 12)
- 年
- 一天中的小时(0-23)
这些整数表示我的网页上的用户选择的日期和时间。 他们可能在地球上的任何地方。
值得庆幸的是,我在地球上的位置有GMT偏移量。 这是一个小数。
如何获取这四个整数,加上GMT偏移小数,并在UTC中获得代表它们的
要回答这个问题,请填写此函数的方法体:
public static DateTime UtcDateTime(int day,int month,int year,int hour,decimal gmtOffset){
// 去做
}
我建议将
更新
虽然Microsoft在MSDN中声明我们应该使用
DateTimeOffset的另一个缺点是它不包含转换时间所需的所有信息,因为它只包含一个偏移量。但是可能有几个具有相同偏移量的实际时区,因此您无法仅在给定偏移的情况下恢复时区。时区不仅仅是一个偏移,它是定义时间转换的规则集,冬/夏时间e.t.c.
更新
这个给你:
1 2 3 4 5 | private static DateTime ToUTC(int day, int month, int year, int hour, decimal utcOffset) { TimeSpan offset = TimeSpan.FromMinutes((double)(utcOffset * 60)); // time zone offset is always aligned to minutes return new DateTimeOffset(year, month, day, hour, 0, 0, offset).ToUniversalTime().DateTime; } |
您应该使用DateTimeOffset。
将小数转换为您需要的精度,然后如下构造(使用FromSeconds作为示例):
new DateTimeOffset(year,month,day,hour,0,0,TimeSpan.FromSeconds(offset));
http://msdn.microsoft.com/en-us/library/system.datetimeoffset(v=VS.90).aspx