3

可能重复:
在 JavaScript 中格式化日期
如何在 JavaScript 中获取日期时间?

我找到了一个在不同时区显示当前日期和时间的脚本。我不知道如何更改格式。目前,它显示为MM/DD/YYYY HH:MM:SS AM/PM,我希望它只显示为HH:MM AM/PM

与普通的 JavaScript 相比,我更擅长 jQuery,这让我感到困惑:

$(document).ready(function() {
    function calcTime(offset) {
        currentDate = new Date();
        utc = currentDate.getTime() + (currentDate.getTimezoneOffset() * 60000);
        newDate = new Date(utc + (3600000*offset));
        return newDate.toLocaleString();
    }
    function displayTimes() {
        $("#chicago").html(calcTime("-6"));
        $("#london").html(calcTime("+1"));
        $("#shanghai").html(calcTime("+8"));
    };
    window.setInterval(displayTimes, 1000);
});
4

2 回答 2

2

罪魁祸首是以下行。

    return newDate.toLocaleString();

具体来说, toLocaleString()

您可以在此处找到有关该行的更多信息:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

一种快速的方法是使用 .toTimeString()

而不是返回 newDate.toLocaleString() 或 .toTimeString() 您想让它按照您的意愿打印。

例如

    return newDate.getHours() + ':' newDate.getMinutes();

那会给你军事时间。

如果您想要上午/下午显示,这可以为您提供

(newDate.getHours() >  11) ? 'pm' : 'am'

如果你想美化时间,0 是午夜 12 点,12 是中午。如果小时数大于 12,您可以减去 12。如果为 0,您也可以将其设置为显示 12。所有这些都可以这样完成:

 (newDate.getHours() === 0) ? 12 : ((newDate.getHours() > 12) ? newDate.getHours() - 12 : newDate.getHours());

绝对应该为 newDate.getHours() 使用 var。说到变量...

请重新格式化您的变量: var currentDate = new Date(), utc = currentDate.getTime() + (currentDate.getTimezoneOffset() * 60000), newDate = new Date(utc + (3600000*offset));

希望有帮助。

编辑:现在一起:替换以下

return newDate.toLocaleString();

与以下

return (newDate.getHours() === 0) ? 12 : ((newDate.getHours() > 12) ? newDate.getHours() - 12 : newDate.getHours()) + ' : ' + newDate.getMinutes() + ' ' + (newDate.getHours() >  11) ? 'pm' : 'am';

这相当草率,而且写得匆忙,但如果你为 newDate.getHours() 使用一个 var,它会更容易阅读。

谢谢。

于 2013-01-31T20:23:07.197 回答
-2
var myDate= new Date();
myDate.format("h:mm tt"); 

http://www.jslab.dk/library/date.format

于 2013-01-31T20:16:30.920 回答