繁体   English   中英

moment.js将东部夏令时间转换为utc吗?

[英]moment.js convert eastern daylight time to utc?

我具有以下功能,可将日期增加30个工作日。 我传入了UTC但是输出使我的eastern daylight time我该怎么办才能使UTC脱离此功能? 我尝试了moment(tmpDate).utc()但似乎没有任何效果。 任何帮助将是巨大的,谢谢!

function addBusinessDays(date, daysToAdd) {
        var cnt = 0;
        var tmpDate = moment(date);
        while (cnt < daysToAdd) {
            tmpDate = tmpDate.add('days', 1);
            if (tmpDate.weekday() != moment().day("Sunday").weekday() && tmpDate.weekday() != moment().day("Saturday").weekday()) {
                cnt = cnt + 1;
            }
        }

        return tmpDate._d;
    }

    var tmp = addBusinessDays("Tue Apr 04 2017 00:00:00 GMT+0000 (UTC)", 30);

正如查理指出的那样,您正在创建一个本地日期。 片刻,默认情况下会创建本地日期。

因此,您需要对功能进行一些小的更改

function addBusinessDays(date, daysToAdd) {
        var cnt = 0;
        var tmpDate = moment.utc(date); // call utc to create a UTC date
        while (cnt < daysToAdd) {
            tmpDate = tmpDate.add('days', 1);
            if (tmpDate.weekday() != moment().day("Sunday").weekday() && tmpDate.weekday() != moment().day("Saturday").weekday()) {
                cnt = cnt + 1;
            }
        }

        return tmpDate.toDate(); // call toDate() to get the JS date out of Moment. Do not use internal private properties.
    }

现在,当您调用它时,您将获得一个JS日期对象。 默认情况下它将是本地的,这就是它们的工作方式。 但是,您可以在JS日期调用toISOString以获取该日期的UTC表示形式。

var tmp = addBusinessDays("Tue Apr 04 2017 00:00:00 GMT+0000 (UTC)", 30);
console.log(tmp.toISOString());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM