如何将自1970年1月1日以来的秒数转换为日期时间值?

时间:2019-01-15 10:07:24

标签: c#

我有一个数字,它是自1970年1月1日以来的秒数。它是用以下方法创建的:

 var utcNow = (int) Math.Truncate(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);

现在需要将该数字转换为字符串形式的日期,如下所示:

Tue, Jan 15, 2019

有人可以给我一些有关如何执行此操作的建议。我想自己可以格式化它,但是我需要一个有关如何首先将整数utcNow转换为日期时间的建议。

3 个答案:

答案 0 :(得分:3)

static readonly DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
...
DateTime time = epoch.AddSeconds(utcNow);

您也可以反过来使用它:

var seconds = (time - epoch).TotalSeconds;

(给出double,但您可以将其强制转换为intlong等)

答案 1 :(得分:3)

已经给出了一些答案,并且可以工作。但是,我认为这是最优雅的方式。我正在使用DateTimeOffset.FromUnixTimeSeconds(int64)

dist_matrix

现在您可以借助this博客条目将其转换为DateTime结构

答案 2 :(得分:2)

从当前时间中减去给定时间,并给出时间跨度实例,从中可以获得总秒数

        var fromDate = new DateTime(1970,1 ,1);
        var diffrance = DateTime.UtcNow.Subtract(fromDate);
        Console.WriteLine(diffrance.TotalSeconds);