簡體   English   中英

JavaScript:Parse上的moment()。to()似乎不適合moment()。utcOffset()

[英]Javascript: moment().to() doesn't seem to work with moment().utcOffset() on Parse

我在將moment()。to()和moment()。utcOffset()很好地放在解析雲代碼上時遇到麻煩。

我在始終位於UTC的Parse.com上將其作為雲代碼運行。 (簡化的)代碼是

function cafeOpenState(cafe, utcOffset) {
    var returnString;

    var now = moment();
    now.utcOffset(utcOffset);
    var dayStr = now.format('ddd');

    // Get appropriate open and closing times
    var openTime = Number(cafe.get('OpenTime')); // stored as 3-4 digit integer e.g. 830
    var closeTime = Number(cafe.get('CloseTime')); // stored as 3-4 digit integer e.g. 2130

    // Figure out what time it is now, in 0-2400 format
    var timeNowStr = now.format('Hmm'); // need this later
    var timeNow = Number(timeNowStr);

    // Find out where it is currently in the time range
    if (openTime == 0 && closeTime == 0) {
        returnString = 'Closed today';
    } else if (timeNow < openTime) {
        var openTimeMoment = moment(openTime, 'Hmm');
        var opensIn = now.to(openTimeMoment);
        var opensInStr = openTimeMoment.format('H:mm');
        returnString = 'Not yet open, opens ' + opensIn + ' at ' + opensInStr;
    } else if (timeNow > openTime && timeNow < closeTime) {
        var closeTimeMoment = moment(closeTime, 'Hmm');
        var closesIn = now.to(closeTimeMoment);
        var closesInStr = closeTimeMoment.format('H:mm');
        returnString = 'Currently open , closes ' + closesIn + ' at ' + closesInStr;
    } else if (timeNow > closeTime) {
        returnString = 'Closed for today';
    } else {
        returnString = 'error';
    }

    // Return a human readable string
    return returnString;
}

問題在於,即使“ now”,“ openTimeMoment”和“ closeTimeMoment”顯示了經過UTC調整的正確時間,“ to”功能似乎也忽略了“ now”。 例如,我得到的輸出是(當前時間為15:00,並且我檢查now是正確的) 'Currently open, closes in 10 hours at 17:00'

如果您不包括8小時的utc調整,則10個小時是正確的。 但這顯然應該是2個小時。

無法在JSFiddle中重現此內容-工作正常。 我在Parse上使用與小提琴相同的moment.js版本。 有任何想法嗎?

我解決了-我使用的utcOffset錯誤。

我設法通過刪除now.utcOffset(utcOffset);來糾正我的功能now.utcOffset(utcOffset); 並將其替換為now.add(utcOffset - now.utcOffset(), 'minutes');

如果有更好的答案,我想看看...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM