0

我有一个自定义脚本,以 HH:MM AM/PM 格式显示几个城市的当前时间。出于某种原因,如果时间是 12:00-12:59 AM/PM,则显示为 12。我不明白它有什么问题,有人能弄清楚吗?

$(document).ready(function() {
    function calculateTime(offset) {
        var currentDate = new Date()
        utc = currentDate.getTime() + (currentDate.getTimezoneOffset() * 60000);
        newDate = new Date(utc + (3600000*offset));
        var minutes = newDate.getMinutes();
        if(minutes < 10) {
            minutes = "0" + minutes;
        }
        return (newDate.getHours() === 0) ? 12 : ((newDate.getHours() > 12) ? newDate.getHours() - 12 : newDate.getHours()) + ' : ' + minutes + ' ' + ((newDate.getHours() >  11) ? 'PM' : 'AM');
    }
    function displayTimes() {
        $(".chicago").html(calculateTime("-6"));
        $(".london").html(calculateTime("+0"));`
        $(".shanghai").html(calculateTime("+8"));
        $(".sydney").html(calculateTime("+9"));
    };
    displayTimes();
    window.setInterval(displayTimes, 5000);
});

我也在考虑调整夏令时,但我认为我应该能够自己解决这个问题(但如果有人知道如何轻松做到这一点,请告诉我!)。

我之前在 Stack Overflow 上得到了一些帮助,所以不管是什么原因导致它可能是我自己没有写的(因此不明白)。关于它为什么不起作用的解释将不胜感激。

4

1 回答 1

2

你错过了一些括号,试试这个:

return ((newDate.getHours() === 0) ? 12 : ((newDate.getHours() > 12) ? newDate.getHours() - 12 : newDate.getHours())) + ' : ' + minutes + ' ' + ((newDate.getHours() >  11) ? 'PM' : 'AM');
于 2013-03-21T15:36:36.537 回答