相关疑难解决方法(0)

在数据库中将日期/时间存储为UTC

我将数据库中的日期/时间存储为UTC,并根据特定时区将其在我的应用程序中计算回本地时间.比方说我有以下日期/时间:

01/04/2010 00:00

比如说它是一个国家,例如英国,它遵守DST(夏令时),在这个特定的时间,我们在夏令时.当我将此日期转换为UTC并将其存储在数据库中时,它实际存储为:

31/03/2010 23:00

由于日期将调整为夏令时的-1小时.当您在提交时观察DST时,此工作正常.但是,当时钟调整回来时会发生什么?当我从数据库中提取该日期并将其转换为本地时间时,特定日期时间将被视为31/03/2009 23:00实际上它被处理为01/04/2010 00:00.

如果我错了,请纠正我但是在存储UTC时间时这不是一个缺陷吗?

时区转换的示例

基本上我正在做的是存储信息提交到我的系统的日期/时间,以便允许用户进行范围报告.这是我存储日期/时间的方式:

public DateTime LocalDateTime(string timeZoneId)
{
    var tzi = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);
    return TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzi).ToUniversalTime().ToLocalTime(); 
}
Run Code Online (Sandbox Code Playgroud)

存储为UTC:

var localDateTime = LocalDateTime("AUS Eastern Standard Time");
WriteToDB(localDateTime.ToUniversalTime());
Run Code Online (Sandbox Code Playgroud)

c# timezone datetime utc

11
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×1

datetime ×1

timezone ×1

utc ×1