Как получить правильное время gmt в Javascript - PullRequest
0 голосов
/ 24 февраля 2011

Для использования API-интерфейса Amazon Mechanical Turk я хочу узнать текущее время по Гринвичу и показать его в формате ISO.

2011-02-24T20:38:34Z

.возможность переформатировать его в формате ISO.Я могу использовать что-то вроде now.toGMTString();, но это делает строку устаревшей, и ее трудно переформатировать с помощью ISO.

Ответы [ 4 ]

5 голосов
/ 25 февраля 2011
var year = now.getUTCFullYear()
var month = now.getUTCMonth()
var day= now.getUTCDay()
var hour= now.getUTCHours()
var mins= now.getUTCMinutes()
var secs= now.getUTCSeconds()

var dateString = year + "-" + month + "-" + day + "T" + hour + ":" + mins + ":" + secs + "Z"

Вы должны использовать UTC сейчас вместо GMT.(В настоящее время это почти то же самое, и это новый стандарт в любом случае)

3 голосов
/ 25 февраля 2011

Я считаю, что это будет работать для вас:

Number.prototype.pad = function(width,chr){
    chr = chr || '0';
    var result = this;
    for (var a = 0; a < width; a++)
        result = chr + result;
    return result.slice(-width);
}
Date.prototype.toISOString = function(){
    return this.getUTCFullYear().pad(4) + '-'
        + this.getUTCMonth().pad(2) + '-'
        + this.getUTCDay().pad(2) + 'T'
        + this.getUTCHours().pad(2) + ':'
        + this.getUTCMinutes().pad(2) + ':'
        + this.getUTCSeconds().pad(2) + 'Z';
}

Использование:

var d = new Date;
alert('ISO Format: '+d.toISOString());

Не намного отличается от всех остальных, но для удобства сделайте его встроенным в объект даты

2 голосов
/ 25 февраля 2011
function pad(num) {
    return ("0" + num).slice(-2);
}

function formatDate(d) {
    return [d.getUTCFullYear(), 
            pad(d.getUTCMonth() + 1), 
            pad(d.getUTCDate())].join("-") + "T" + 
           [pad(d.getUTCHours()), 
            pad(d.getUTCMinutes()), 
            pad(d.getUTCSeconds())].join(":") + "Z";
}

formatDate(new Date());

Выход:

"2011-02-24T21:01:55Z"
2 голосов
/ 25 февраля 2011

Этот скрипт может позаботиться об этом

/* use a function for the exact format desired... */
function ISODateString(d){
function pad(n){return n<10 ? '0'+n : n}
return d.getUTCFullYear()+'-'
  + pad(d.getUTCMonth()+1)+'-'
  + pad(d.getUTCDate())+'T'
  + pad(d.getUTCHours())+':'
  + pad(d.getUTCMinutes())+':'
  + pad(d.getUTCSeconds())+'Z'}
var d = new Date();
document.write(ISODateString(d)); // prints something like 2009-09-28T19:03:12Z
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...