如何将unix时间戳转换为datetime

Dev*_*evT 4 c# datetime unix-timestamp

我试图 在DateTime中转换此unix时间戳 1415115303410,这样:

private static DateTime UnixTimeStampToDateTime(long unixTimeStamp)
{
        System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
        dtDateTime = dtDateTime.AddMilliseconds(unixTimeStamp);
        return dtDateTime;
}
Run Code Online (Sandbox Code Playgroud)

但是我的日期错了: 日期:{04/11/0045 00:00:00}

注意:dtDateTime.AddSeconds(unixTimeStamp)抛出异常..我的数字以毫秒为单位.

使用此在线转换工具http://www.epochconverter.com/我得到了正确的转换:

04/11/2014 15:35:03 GMT + 0:00

我怎么能改变这个呢?

Ice*_*ind 10

您的代码工作正常,原样.这是一个小提琴.

告诉你使用的每个人都AddSeconds错了.你给我们的数字显然是毫秒.一年有31,536,000秒.1415115303410除以31536000是4487.自1970年1月1日以来,已经过去了4,447年.


Sha*_*ood 7

使用AddSeconds而不是AddMilliseconds

 private static DateTime UnixTimeStampToDateTime(long unixTimeStamp) 
 {
    System.DateTime dtDateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
    dtDateTime = dtDateTime.AddSeconds(unixTimeStamp);
    return dtDateTime;
 }
Run Code Online (Sandbox Code Playgroud)


Mak*_*luv 7

只需使用 DateTimeOffset

DateTimeOffset date = DateTimeOffset.FromUnixTimeSeconds(1415115303410)