将刻度转换为DateTime

Gar*_*ary 6 c# datetime

本网站上有许多问题解释如何执行此操作.我的问题当我做什么似乎对其他人都有效时我没有得到正确的日期或时间.代码是......

long numberOfTicks = Convert.ToInt64(callAttribute);
startDateTime = new DateTime(numberOfTicks);
Run Code Online (Sandbox Code Playgroud)

callAttribute="1379953111"

转换后的值为numberOfTicks= 1379953111

但结果DateTimestartDateTime={1/1/0001 12:02:17 AM}

我已经为ticks取了相同的值并在线转换它,它会提供正确的日期/时间.

我究竟做错了什么?

Tho*_*que 19

你的价值似乎不是一些滴答声; 我怀疑这是一个UNIX时间戳(自1970/01/01 UTC以来的秒数)

这是从UNIX时间戳转换的函数:

static readonly DateTime _unixEpoch =
    new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

public static DateTime DateFromTimestamp(long timestamp)
{
    return _unixEpoch.AddSeconds(timestamp);
}
Run Code Online (Sandbox Code Playgroud)

  • 为了避免人们不得不检查,问题的值"1379953111"将返回`9/23/2013 4:18:31 PM`,这肯定指出这是正确的答案,假设用户最近使用'DateTime.现在等等,他可能在不同的时区或几个小时的时间偏移. (2认同)
  • 你应该将Unix纪元的"种类"指定为Utc,因为这是Unix时代的定义方式. (2认同)