首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript:.to().utcOffset()似乎不能在Parse上使用矩()

Javascript:.to().utcOffset()似乎不能在Parse上使用矩()
EN

Stack Overflow用户
提问于 2015-09-28 10:15:24
回答 1查看 84关注 0票数 0

在分析云代码中,我很难让矩()、.to()和矩().utcOffset()很好地放在一起。

我把它作为云代码运行在Parse.com上,它总是在UTC上。(简化)代码是

代码语言:javascript
复制
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;
}

问题是,即使“现在”、“openTimeMoment”和“closeTimeMoment”显示了正确的UTC调整时间,“to”函数似乎忽略了“现在”。例如,我得到的输出类似于(当时间是15:00,并且我已经检查now是正确的) 'Currently open, closes in 10 hours at 17:00'

如果不包括8小时的世界协调时调整数,10小时是正确的。但很明显应该是两个小时。

无法在JSFiddle中复制此操作--工作正常。我在Parse上使用的moment.js版本与在小提琴上使用的版本相同。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-28 13:25:45

我解决了-我用错了utcOffset。

我设法通过删除now.utcOffset(utcOffset);并将其替换为now.add(utcOffset - now.utcOffset(), 'minutes');来纠正我的函数。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32820566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档