在javascript中使用时区创建当前时间列表

时间:2013-04-02 18:54:11

标签: javascript

如何在javascript中创建此列表:

从-11到+14。

enter image description here

var now = new Date();

给我这个: 2013年4月2日星期二20:48:11 GMT + 0200(中欧夏令时)

2013年4月2日星期二20:48:11 GMT + 0200就足够了,但是有了完整的日期,它会更好。然后我仍然需要创建一个列表。我可以在javascript中创建一个选择选项,例如

var time = document.getElementById('time'); 
time.options[time.options.length] = new Option(value, text); 
time.options[time.options.length] = new Option(value, text);

所以我现在已经完成了部分内容但不能将整个事情放在一起。

1 个答案:

答案 0 :(得分:1)

使用非UTC方法时,无法更改输出日期的本地时区,因此我们需要作弊。相反,我们将创建不同的日期(UTC)并假装它们位于​​我们想要枚举的时区中:

var options = [],
    dayNames = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
    monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

for (var i=-11; i<=14; i++) {
    var d = new Date(); // now
    d.setUTCHours(d.getUTCHours() + i); // translate

    // format:
    var na = dayNames[d.getUTCDay()],
        mo = monthNames[d.getUTCMonth()],
        da = d.getUTCDate(),
        ye = d.getUTCFullYear(),
        ho = ("0"+d.getUTCHours()).slice(-2),
        mi = ("0"+d.getUTCMinutes()).slice(-2),
        of = (i<0?"-":"+")+("0"+Math.abs(i)+"00").slice(-4);
    var text = na+", "+mo+" "+da+", "+ye+" - "+ho+":"+mi+" "+of;
    options.push(new Option(i, text));
}