【问题标题】:moment.js timezone get millisecondsmoment.js 时区获取毫秒数
【发布时间】:2023-03-14 15:22:01
【问题描述】:

我正在尝试获取过去的天数。我正在存储日期的纪元(毫秒)。 我正在以毫秒为单位从数据库中读取 startDate(第一条记录的日期值),并且我想在指定时区找到当前纪元。

我试过了:

var startDate = rows[0]['MIN_DATE'];
var endDate = moment().tz("America/New_York");

然后为了计算差异,我使用了:

var oneDay = 24 * 60 * 60 * 1000;
var daysCount = Math.ceil((endDate - startDate) / (oneDay));

startDate的值为:

1522821600000 which is: Wednesday, April 4, 2018 2:00:00 AM GMT-04:00 DST

endDate 的值为:

Moment_d: Wed Apr 04 2018 22:24:45 GMT-0400 (EDT)_isAMomentObject: true_isUTC: true_isValid: true_locale: Locale_offset: -240_pf: Object_z: Zone__proto__: Object

daysCount的值是2,怎么办? 如何从以下位置获取毫秒而不是对象:

moment().tz("America/New_York");

【问题讨论】:

    标签: javascript node.js momentjs


    【解决方案1】:

    要直接回答您的问题,请使用 .valueOf() 获取 moment.tz("America/New_York") 的值

    var endDate = moment.tz("America/New_York").valueOf()
    

    我很难理解您的问题,但我相信您正在尝试了解考虑正确时区的日子之间的差异。以下使用 .diff() (https://momentjs.com/docs/#/displaying/difference/) 给出了准确的结果

    var timeZone = "America/New_York"
    var startDate = 1522821600000
    var momentStartDate = moment.tz(startDate,timeZone)
    var momentEndDate = moment.tz(timeZone)
    
    alert(momentEndDate.diff(momentStartDate, 'days') );
    

    【讨论】:

      【解决方案2】:

      使用fromNow() 函数。这是非常直接的。

      这样做:

      moment(date).fromNow();

      如果日期已经过去,它会给你过去的天数,如果日期是未来,它会给你过去的天数。

      以下是示例:

      var date = 1522821600000; // your date
      
      console.log(moment(date).fromNow());
      <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

      【讨论】:

      【解决方案3】:

      通过以下语句解决了这个问题:

      var endDate = moment().tz("America/New_York").valueOf();
      

      【讨论】:

        猜你喜欢
        • 2017-02-20
        • 2019-02-28
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        • 1970-01-01
        • 2013-07-28
        • 2019-08-27
        • 1970-01-01
        相关资源
        最近更新 更多