C# 将epoch/unix转换为Datetime

C# 将epoch/unix转换为Datetime,c#,datetime,unix-timestamp,C#,Datetime,Unix Timestamp,这是一个问题,不是一个重复的问题,这个问题演示了转换方法的问题,而不是如何执行转换。完整阅读问题。 我有一个时间戳,我相信它是unix时间戳,当使用下面的转换器时,它会正确地转换时间戳 价值:1365151714493 我环顾四周,找到了一个关于如何将其转换为datetime对象的方法,该方法似乎很简单,创建一个datetime对象,将日期设置为1970年1月1日的五月之夜,并将值添加为秒: public static DateTime? ConvertUnixTimeStamp(string

这是一个问题,不是一个重复的问题,这个问题演示了转换方法的问题,而不是如何执行转换。完整阅读问题。

我有一个时间戳,我相信它是unix时间戳,当使用下面的转换器时,它会正确地转换时间戳

价值:1365151714493

我环顾四周,找到了一个关于如何将其转换为datetime对象的方法,该方法似乎很简单,创建一个datetime对象,将日期设置为1970年1月1日的五月之夜,并将值添加为秒:

public static DateTime? ConvertUnixTimeStamp(string unixTimeStamp)
{
    return new DateTime(1970, 1, 1, 0, 0).AddSeconds(Convert.ToDouble(unixTimeStamp));
}
问题是每次我用上面的值调用此方法时,我都会得到一个超出范围的值异常


我需要先用这个值做些什么吗?该字符串将转换为双ok。调用
AddSeconds(double)
methodos

时会引发异常,因为它是关于GMT的

此外,从您提到的站点来看,它假定值以毫秒为单位,而不是传统值

该时间戳(1365151714493)以毫秒为单位,而不是以秒为单位。您需要除以
1000
或使用
addmillizes
。如果它被视为秒,那么它就是未来43259年(粗略计算)的日期。这超出了10000年时的
DateTime
范围,因此抛出了
ArgumentOutOfRangeException

public static DateTime? ConvertUnixTimeStamp(string unixTimeStamp)
{
    return new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(Convert.ToDouble(unixTimeStamp));
}

<>你也可以考虑强迫它到GMT,正如V4VeDETA建议的那样。此外,如果您希望混合使用多种格式(秒或毫秒),可能需要对解析值进行快速大小检查。

非常确定时间戳是以毫秒为单位的,而不是以秒为单位的。编辑:除非。。。你知道的。。。它应该代表未来43259年的一个日期。这怎么会是一个副本????您提供的链接询问如何进行转换。我在尝试进行转换时询问了一个问题!完全忽略了值为毫秒的可能性,因为我读的每一篇文章都给出了时间戳以秒为单位的示例,我假设给我的值是相同的。谢谢
public static DateTime? ConvertUnixTimeStamp(string unixTimeStamp)
{
    return new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(Convert.ToDouble(unixTimeStamp));
}