C# 纪元时间到日期和时区转换
C# Epoch time to date and timezone convertion
什么是将 Epoch 时间转换为日期的好方法,但要使用特定时区
我需要检查两个日期。我在数据库中有一个日期,在 x 网站中有另一个日期。
我知道这两个日期在 yyyy-MM-dd 方面完全相同
例如:
数据库日期是: 1398891600 = 2014-05-01
X 网站日期是: 1398902400000 = 2014-05-01
C# 代码"converter"
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;
}
问题是,当我使用我的方法转换时,一个数据库日期是 2014-04-30,网站日期是 2014-05-01。
测试了日期
Database date is: 1398891600 = 2014-05-01
X Website date is: 1398902400000 = 2014-05-01
EpochConverter.com 给我以下结果:
1398891600000 -> 2014 年 4 月 30 日,星期三 21:00:00 GMT
1398902400000 -> 2014 年 5 月 1 日星期四 00:00:00 GMT
所以你的代码似乎与EpochConverter.com一致。
关于时区,我会确保所有日期都是 stored/retrieved 使用 UTC。在转换 to/from 个不同的时区时,这将为您省去很多麻烦。在这种情况下,假设纪元是相对于 UTC 日期存储的,您只需执行以下操作:
DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(Convert.ToDouble(epochdate));
如果需要向最终用户显示本地时间,则可以使用以下方法:
utcDate.ToLocalTime();
什么是将 Epoch 时间转换为日期的好方法,但要使用特定时区
我需要检查两个日期。我在数据库中有一个日期,在 x 网站中有另一个日期。
我知道这两个日期在 yyyy-MM-dd 方面完全相同
例如:
数据库日期是: 1398891600 = 2014-05-01
X 网站日期是: 1398902400000 = 2014-05-01
C# 代码"converter"
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;
}
问题是,当我使用我的方法转换时,一个数据库日期是 2014-04-30,网站日期是 2014-05-01。
测试了日期Database date is: 1398891600 = 2014-05-01
X Website date is: 1398902400000 = 2014-05-01
EpochConverter.com 给我以下结果:
1398891600000 -> 2014 年 4 月 30 日,星期三 21:00:00 GMT
1398902400000 -> 2014 年 5 月 1 日星期四 00:00:00 GMT
所以你的代码似乎与EpochConverter.com一致。
关于时区,我会确保所有日期都是 stored/retrieved 使用 UTC。在转换 to/from 个不同的时区时,这将为您省去很多麻烦。在这种情况下,假设纪元是相对于 UTC 日期存储的,您只需执行以下操作:
DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(Convert.ToDouble(epochdate));
如果需要向最终用户显示本地时间,则可以使用以下方法:
utcDate.ToLocalTime();