【问题标题】:Convert Date to Milliseconds将日期转换为毫秒
【发布时间】:2012-03-15 16:44:14
【问题描述】:

我正在使用 Visual Studio 2010、MVC 3 和 C#。我正在创建一些高图表,需要将 x 轴设为日期。我正在从数据库中提取日期并将它们添加到数组中,然后将其传递给 highcharts。我认为 highcharts 要求日期为毫秒格式。我该如何将“2011 年 12 月 20 日下午 5:10:13”的 DateTime 转换为毫秒?

【问题讨论】:

  • 你的意思是你需要Unix纪元格式的DateTime值,如here所述?
  • 毫秒格式是什么意思?自 Unix 纪元以来经过的毫秒数?从 01/01/0001 开始?

标签: c# visual-studio-2010 highcharts


【解决方案1】:

一旦确定了要计算毫秒数的依据,您就可以从另一个 DateTime 对象中获取一个 TimeSpan 对象。从 TimeSpan 你可以得到 TotalMilliseconds。

换句话说,如果 start 和 end 是 DateTime 对象,你可以这样做:

double milliseconds = (end - start).TotalMilliseconds;

【讨论】:

  • 我还不太确定我想从什么计算毫秒数。我只知道我不能将 DateTime 对象传递给 HighCharts。对于数据,它只接受数字值。我测试了您的解决方案,它似乎有效。我收到了几个可以接受的答案。但是,我认为你的是最干净和最容易使用的。感谢您的帮助。
【解决方案2】:

您可以使用DateTime.Ticks 属性并将值转换为毫秒。

此属性的值表示自 0001 年 1 月 1 日午夜 12:00:00 以来经过的 100 纳秒间隔数,它表示 DateTime.MinValue。它不包括可归因于闰秒的滴答数。

单个滴答表示一百纳秒或百万分之一秒。一毫秒内有 10,000 个滴答声。

【讨论】:

    【解决方案3】:

    C# 中的.Ticks DateTime 为您提供任何时间的刻度值。此后您可以转换为毫秒,如下所示:

    long dateticks = DateTime.Now.Ticks;
    long datemilliseconds = dateticks / TimeSpan.TicksPerMillisecond;
    

    【讨论】:

    • 请在发布之前测试您的代码。我修复了您代码中的简单错误。
    • 正确的做法是long datemilliseconds = dateticks / TimeSpan.TicksPerMillisecond;。不要使用幻数。
    【解决方案4】:
    DateTime[] dates = ;
    
    var minDate = dates.Min();
    
    var msDates = dates.Select(date => (date - minDate).TotalMilliseconds).ToArray();
    

    【讨论】:

    • 这也是我的假设,即需要最低参考日期。
    猜你喜欢
    • 2019-12-24
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多