首页 > 解决方案 > 将 Unix 纪元时间戳转换为 DateTime 并返回

问题描述

我将日期和时间 19/03/2019 14:23:00 转换为 Unix Epoch TimeStamp,然后再转换回 DateTime 对象。转换成功,除了年份,结果是 0050 而不是 2019。我不知道我在转换过程中做错了什么,回到 DateTime。代码如下:

DateTime targetDateTime = new DateTime(2019, 03, 19, 14, 23, 00, DateTimeKind.Local);
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);    
long unixDateTime = (long)(targetDateTime.ToUniversalTime() - epoch).TotalSeconds;
TimeSpan resultingTimeSpan = TimeSpan.FromSeconds(unixDateTime);
DateTime localDateTime = new 
DateTime(resultingTimeSpan.Ticks).ToLocalTime();

localDateTime.Year 结果:0050 请帮忙。

标签: c#datetime

解决方案


如果您的目的是从日期时间值中获取刻度,然后将其转换回原始日期时间值,则可以使用以下代码

DateTime targetDateTime = new DateTime(2019, 03, 19, 14, 23, 00, DateTimeKind.Local);

var totalTicks = targetDateTime.ToUniversalTime().Ticks;

DateTime localDateTime = new DateTime(totalTicks, DateTimeKind.Utc).ToLocalTime();

如果您仍想获取有关纪元时间的刻度值,那么此代码可以提供帮助

DateTime targetDateTime = new DateTime(2019, 03, 19, 14, 23, 00, DateTimeKind.Local);
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
long unixDateTime = (targetDateTime.ToUniversalTime() - epoch).Ticks;

 //Add the ticks back to the epoch
 var utcTime = epoch.AddTicks(unixDateTime);
 DateTime localDateTime = utcTime.ToLocalTime();

推荐阅读