我需要保存在数据库中才能转换为UTC?

时间:2011-10-05 07:14:08

标签: c# .net datetime timezone

我的问题是:我有很多数据包含日期时间(在当地时间),我需要将其转换为UTC。它看起来如此:

class Data
{
  int id; //Some id for database
  DateTime time; //Time in local time, i need to convert it to utc
}

//Converting:
1)Find this id in database and extract some info (which excatly?)
2)Convert time to UTC

我的问题是:我需要在数据库中保留哪种数据才能正确转换时间?

我的版本是:在本地时间和utc之间保持小时的整数差异,并通过将其添加到本地时间进行转换。但这是合适的解决方案吗?

2 个答案:

答案 0 :(得分:1)

普遍接受的解决方案是始终存储UTC日期时间,然后在将其加载或显示给用户时将其转换为本地时间

答案 1 :(得分:0)

保持整数差异是不够的,因为这并不区分夏令时(DST)和非夏令时。

最好的方法是保留时区。通用且支持得非常好的时区系统为Olson Tz

它们是大城市名称的参考,代表时区。例如,Pasific Time将是America \ Los_Angeles。请注意,这包括基于存储日期的日光和非日光。所以你不需要知道什么时候开始玩白昼 - 这被纳入olson时区。

也看here