And*_*ark 13 c# datetime unix-timestamp
这个问题不是重复,这个问题演示了转换方法的问题,而不是如何执行转换.完整阅读问题.
我有一个时间戳,我相信是一个unix时间戳,当使用以下转换器时,它正确转换印章
价值:1365151714493
http://www.epochconverter.com/
我环顾四周,发现了一个例子就如何将其转换为datetime obect和方法看似简单,创建一个DateTime对象,并设置日期威力晚上1/1/1970,并添加值作为第二:
public static DateTime? ConvertUnixTimeStamp(string unixTimeStamp)
{
return new DateTime(1970, 1, 1, 0, 0).AddSeconds(Convert.ToDouble(unixTimeStamp));
}
Run Code Online (Sandbox Code Playgroud)
问题是每当我用上面的值调用这个mehod我得到一个超出范围异常的值.
我是否需要先对价值做任何事情?字符串转换为双ok.调用时抛出异常AddSeconds(double)methos
Chr*_*air 15
该时间戳(1365151714493)以毫秒为单位,而不是秒.你需要除以1000或使用AddMilliseconds.如果它被视为秒,那么将来的某个日期大约为43,459(粗略计算).这是超出了范围DateTime,其马克塞斯在一年10000,从而投掷ArgumentOutOfRangeException.
public static DateTime? ConvertUnixTimeStamp(string unixTimeStamp)
{
return new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(Convert.ToDouble(unixTimeStamp));
}
Run Code Online (Sandbox Code Playgroud)
您可能还想考虑将其强制为GMT,如V4Vendetta所建议的那样.此外,如果您希望混合使用格式(秒或毫秒),则可能需要对解析后的值进行快速大小检查.
我想你应该尝试一下,因为它与GMT有关
此外,您提到的网站假设该值以毫秒为单位,而不是传统的unix时间戳(以秒为单位)
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
epoch = epoch.AddMilliseconds(yourvalue);// your case results to 4/5/2013 8:48:34 AM
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25834 次 |
| 最近记录: |