将长整型转换为日期时间给出假值



我只是尝试将存储为长值的日期转换为日期时间,但它给了期{2/01/0001 7:35:22 PM},而它应该是{23/09/2019 4:30:23}(GMT +10(

下面是初始化对象时1569220232761创建的长整型值。 这是返回 2/01/0001 的代码

SeshStart = new DateTime(CurrentSession.startDate, DateTimeKind.Local);

CurrentSession.startDate1569220232761.

你拥有的是Unix时间,而不是Ticks的数量(这将大几个数量级(

637,048,098,230,000,0001,569,220,232,761

Unix 时间

Unix 时间(也称为纪元时间、POSIX 时间、秒 自纪元或UNIX纪元时间以来(是一个描述的系统 一个时间点。这是自那以后经过的秒数 Unix 纪元,即 1970 年 1 月 1 日 00:00:00 UTC 时间,

日期时间(Int64(

将 DateTime 结构的新实例初始化为指定的 刻度数。

尝试这样的事情

public static DateTime UnixTimeToDateTime(long unixtime)
{
var dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
return dtDateTime.AddMilliseconds(unixtime).ToLocalTime();
}

因为你调用DateTime(Int64, DateTimeKind)重载并且如前所述;

参数

ticks

国际64

以100 纳秒数表示的日期和时间自 0001 年 1 月 1 日 00:00:00.000 以来经过的间隔 公历。

作为一个Ticks1569220232761等于Monday, 23 September 2019 06:30:32.761 GTM,你可以准确地计算你的值,如何解释如何将Unix时间戳转换为日期时间,反之亦然?问题。

还要知道,在.NET 4.6版本中,引入了两种方法作为DateTimeOffset.FromUnixTimeSeconds(Int64)DateTimeOffset.ToUnixTimeSeconds

最新更新