什么是将纪元时间转换为日期的好方法,但使用特定时区
我需要检查两个日期。我在数据库中有一个日期,另一个在 x 网站中。
我知道这两个日期与 yyyy-MM-dd 的关系完全相同
例如:
数据库日期为: 1398891600 = 2014-05-01
X 网站日期为: 1398902400000 = 2014-05-01
C# 代码“转换器”
private string DateChecker_inEPOCH(string epochdate)
{
if (epochdate.Length < 13)
{
epochdate = epochdate + "000";
}
DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(Convert.ToDouble(epochdate));
string dateFormated = dt.ToString("yyyy-MM-dd");
return dateFormated;
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我使用我的方法进行转换时,一个数据库日期是 2014-04-30,网站日期是 2014-05-01。
我使用http://www.epochconverter.com/测试了日期
数据库日期为:1398891600 = 2014-05-01
X 网站日期为:1398902400000 = 2014-05-01
EpochConverter.com 给了我以下结果:
1398891600000 -> 2014 年 4 月 30 日星期三 21:00:00 GMT
1398902400000 -> 2014 年 5 月 1 日星期四 00:00:00 GMT
所以你的代码似乎与 EpochConverter.com 一致。
关于时区,我会确保使用 UTC 存储/检索所有日期。当涉及到/从不同时区转换时,这将为您省去很多麻烦。在这种情况下,假设纪元是相对于 UTC 日期存储的,您只需执行以下操作:
DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(Convert.ToDouble(epochdate));
Run Code Online (Sandbox Code Playgroud)
如果您需要向最终用户显示本地时间,则可以使用以下内容:
utcDate.ToLocalTime();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3536 次 |
| 最近记录: |