我正在获取开始时间
634942626000000000
和结束时间 634942638000000000
。如何将其转换为 Unix 时间戳?我想在 PHP 中显示格式化的日期/时间?
C# 刻度是自午夜以来的刻度数
0001-01-01 00:00:00
(每个刻度是秒的 1/10000000),UNIX 时间戳是自 UNIX 纪元开始以来的秒数 (1970-01-01 01:00:00
),因此所需的结果是 $seconds = 634942626000000000/10000000 - $number_of_seconds
,其中 $number_of_seconds
是 0001-00-01 00:00:00
和 1970-01-01 01:00:00
之间的秒数。因此,您现在所需要做的就是确定 $number_of_seconds
等于什么。
更新:这是在 C# 中执行此操作的方法:如何将 Unix 时间戳转换为 DateTime,反之亦然?
更新2使用这个简单的脚本http://hastebin.com/lefiyiheju.mel确定
$number_of_seconds
是62136892800,但我不知道它是否准确
这应该可以做到:
$seconds = 634942626000000000 / 1000000000;
echo date("Y-m-d H:i:s", $seconds);
@Sinkeat 在 https://stackoverflow.com/a/14427911/1399272 的评论中有正确答案。
Console.WriteLine($"{DateTime.UnixEpoch}: {DateTime.UnixEpoch.Ticks}");
打印
1/1/1970 12:00:00 AM: 621355968000000000
。 所以
$number_of_seconds = 62135596800
$seconds = $ticks/10000000 - $number_of_seconds
应该这样做。 我没有 PHP 解释器来测试这个,但 Google Sheets 中的类似公式确实适用于上述数字,例如
=EPOCHTODATE(C2/10000000-62135596800)
在Python中,你会做的
In [53]: import datetime
In [54]: ticks = 634942626000000000
In [55]: start = datetime.datetime(1, 1, 1)
In [56]: delta = datetime.timedelta(seconds=ticks/10000000)
In [57]: the_actual_date = start + delta
In [58]: the_actual_date.timestamp()
Out[58]: 1358665800.0
In [59]: the_actual_date
Out[59]: datetime.datetime(2013, 1, 20, 7, 10)