我只是尝试将存储为长值的日期转换为日期时间,但它给了期{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.startDate
等1569220232761
.
你拥有的是Unix时间,而不是Ticks的数量(这将大几个数量级(
即637,048,098,230,000,000
1,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 以来经过的间隔 公历。
作为一个Ticks
,1569220232761
等于Monday, 23 September 2019 06:30:32.761 GTM
,你可以准确地计算你的值,如何解释如何将Unix时间戳转换为日期时间,反之亦然?问题。
还要知道,在.NET 4.6版本中,引入了两种方法作为DateTimeOffset.FromUnixTimeSeconds(Int64)
和DateTimeOffset.ToUnixTimeSeconds
。