如何在Javascript中获得正确的gmt时间

如何在Javascript中获得正确的gmt时间,javascript,jquery,time,mechanicalturk,Javascript,Jquery,Time,Mechanicalturk,为了使用Amazon mechanical TurkAPI,我想获得当前GMT时间,并以ISO格式显示它 2011-02-24T20:38:34Z 我想知道是否有任何方法可以正确获得格林尼治标准时间,也可以用ISO格式重新格式化它。我可以使用类似于now.togmString()的东西但它会使字符串过期,并且很难用ISO重新格式化 var year = now.getUTCFullYear() var month = now.getUTCMonth() var day= now.getUTCD

为了使用Amazon mechanical TurkAPI,我想获得当前GMT时间,并以ISO格式显示它

2011-02-24T20:38:34Z
我想知道是否有任何方法可以正确获得格林尼治标准时间,也可以用ISO格式重新格式化它。我可以使用类似于
now.togmString()的东西但它会使字符串过期,并且很难用ISO重新格式化

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。(现在的情况几乎相同,而且它是新的标准)

我相信这对您有用:

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';
}

与其他人的答案没有太大区别,但为了方便起见,将其内置到date对象中

此脚本可以处理它

/* 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
/*将函数用于所需的精确格式*/
函数ISODateString(d){
功能板(n){返回n
输出:

"2011-02-24T21:01:55Z"

检查上的方法文档,这超出了您的问题范围,但您最好在服务器端获取此值。如果需要基于服务器提供的时间的javascript日期对象,则可以使用setUTC…()函数。getTimezoneOffset()以分钟为单位,因此您可能需要使用addMinutes,而不仅仅是减去偏移量。@Dave:是的,仍然在使用它,所以还没有完成调整。;-)但这是一个很好的选择。除了它不填充1位数之外,它还不错,并且没有考虑到如果1-12这些都是相当大的错误,月份将是0-11。这是一个很好的选择lso打印一周中的某一天,即该月的某一天。非常感谢,这里唯一的问题是输出与iso不兼容,我不得不添加01而不是1。再次感谢,幸运的是现在有了。;-)
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"