【问题标题】:How to convert time string in milliseconds to DateTime object in c#?如何将时间字符串以毫秒为单位转换为 c# 中的 DateTime 对象?
【发布时间】:2015-04-09 09:19:27
【问题描述】:

我以毫秒为单位的时间是这样的字符串:229935440730121 如何将此字符串转换为 DateTime 对象。
谢谢

更新

抱歉,正确的字符串是:1423509923000,转换后应该是 2/9/15 7:25:23 PM。这是从遥测设备接收到的时间字符串。

【问题讨论】:

  • 大概是一个纪元以来的毫秒数 - 可能是 unix 纪元?所以首先将其解析为long,然后将该毫秒数添加到代表该纪元的DateTime...
  • Tim - 这将引发溢出异常。对于这么大的数字,您需要 long.Parse
  • 229935440730121 毫秒大约是 7286 年。检查您是否正确计算了参数。
  • @DmitryBychenko:也许它已经是总和了,f.e.人日。但是,听起来TimeSpan 似乎更合适。例如:TimeSpan.FromMilliseconds(229935440730121)

标签: c# string datetime converter


【解决方案1】:

毫秒是一个持续时间,而不是一个时间。您可以轻松地将其转换为TimeSpan

string ms = "229935440730121";
TimeSpan ts = TimeSpan.FromMilliseconds(double.Parse(ms));

要转换为DateTime,您需要知道测量跨度的参考点,然后只需将TimeSpan 添加到该日期即可:

DateTime dt = DateTime.MinValue;  // for example only
dt += ts;  // add the timespan to the date

在您的示例中,毫秒数代表超过 7,280 年,因此不清楚参考点应该是什么。

【讨论】:

  • 正确的字符串是 1423509923000。这是自协调世界时间 1970-01-01T00:00:00 以来经过的给定毫秒数。我用DateTime.Parse("1970-01-01T00:00:00") 替换了DateTime.MinValue,效果很好。谢谢
猜你喜欢
  • 1970-01-01
  • 2016-11-01
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 2018-05-04
相关资源
最近更新 更多