none
如何计算指定日期与 1970 年 1 月 1 日午夜的毫秒数?? RRS feed

  • 问题

  • 如题 如何计算 1970 年 1 月 1 日 到指定日期((1900,0,6,2,5))的毫秒数

    就是JavaScript 里的 Date.UTC(1900, 0, 6, 2, 5)

    我想做的是返回指定的时间1900年1月6号2点5分 距 GMT 时间 1970 年 1 月 1 日午夜的毫秒数



    • 已编辑 ylzl 2016年12月16日 0:25
    2016年12月15日 6:59

答案

  • timespan的定义

    应该用datetime

    DateTime t1 = new DateTime(1970, 1, 1, 0, 0, 0);
    DateTime t2 = new DateTime(1900, 1, 6, 2, 5, 0);        
    var totalMill = (t2 - t1).TotalMilliseconds;

    • 已标记为答案 ylzl 2016年12月17日 0:55
    2016年12月16日 9:09
  • 方法一

    DateTime t1 = new DateTime(1970, 1, 1, 0, 0, 0);
    DateTime t2 = new DateTime(1900, 1, 6, 2, 5, 0);
    var totalMill = (t2 - t1).TotalMilliseconds;
    DateTime tmp1 = t1.AddMilliseconds(Convert.ToInt64((31556925974.7 * (2017 - 1900) + (long)sTermInfo[3 * 2 + 1] * 60000) + totalMill)).ToLocalTime();

    方法二

    DateTime tmp2 = t2.AddMilliseconds(Convert.ToInt64(31556925974.7 * (2017 - 1900) + (long)sTermInfo[3 * 2 + 1] * 60000)).ToLocalTime();

    • 已标记为答案 ylzl 2016年12月19日 7:23
    2016年12月19日 2:20

全部回复

  • TimeSpan ygtm = new TimeSpan(1900, 1, 2, 5, 0);
    TimeSpan gmtm = new TimeSpan(1970, 1, 1, 0, 0);
    double i = (ygtm-gmtm).TotalMilliseconds;

    但是结果不对呢?

    JavaScript 里的 Date.UTC(1900, 0, 6, 2, 5) 结果是 -2208549300000

    而这个结果是-6047935000

    ??

    • 已编辑 ylzl 2016年12月16日 1:01
    2016年12月16日 0:24
  • Hi,

    我的java不是很了解。

    我觉得应该是 TimeSpan 类型定义的不同导致的结果也不同。

    Best Regards,

    Hart 


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2016年12月16日 7:52
    版主
  • timespan的定义

    应该用datetime

    DateTime t1 = new DateTime(1970, 1, 1, 0, 0, 0);
    DateTime t2 = new DateTime(1900, 1, 6, 2, 5, 0);        
    var totalMill = (t2 - t1).TotalMilliseconds;

    • 已标记为答案 ylzl 2016年12月17日 0:55
    2016年12月16日 9:09
  • 非常感谢  接下来的两部还要求教

    JavaScript是html的脚本 不是java

    var tmp1 = new Date((31556925974.7*(yyyy-1900)+sTermInfo[mm*2+1]*60000)+Date.UTC(1900,0,6,2,5));

    tmp1 得出的结果是

     DateTime t1 = new DateTime(1970, 1, 1, 0, 0, 0);
                DateTime t2 = new DateTime(1900, 1, 6, 2, 5, 0);
                var totalMill = (t2 - t1).TotalMilliseconds;
                var tmp1 = new DateTime(Convert.ToInt64((31556925974.7 * (2017 - 1900) + sTermInfo[4 * 2 + 1] * 60000) + totalMill));

    而c# 里面得出的结果是 

    0001/1/2 17:13:27  如何在winfrom 里面得到截图里的结果??


    • 已编辑 ylzl 2016年12月16日 14:02
    2016年12月16日 14:01
  • 方法一

    DateTime t1 = new DateTime(1970, 1, 1, 0, 0, 0);
    DateTime t2 = new DateTime(1900, 1, 6, 2, 5, 0);
    var totalMill = (t2 - t1).TotalMilliseconds;
    DateTime tmp1 = t1.AddMilliseconds(Convert.ToInt64((31556925974.7 * (2017 - 1900) + (long)sTermInfo[3 * 2 + 1] * 60000) + totalMill)).ToLocalTime();

    方法二

    DateTime tmp2 = t2.AddMilliseconds(Convert.ToInt64(31556925974.7 * (2017 - 1900) + (long)sTermInfo[3 * 2 + 1] * 60000)).ToLocalTime();

    • 已标记为答案 ylzl 2016年12月19日 7:23
    2016年12月19日 2:20