Javascript Date()将某些日期字符串转换为本地时间
我试图通过用date()对象包装两个日期字符串来比较它们是否相等。我住在西雅图,出于某种原因,第二个日期字符串转换为PST,然后以GMT表示,结果如下:Javascript Date()将某些日期字符串转换为本地时间,javascript,Javascript,我试图通过用date()对象包装两个日期字符串来比较它们是否相等。我住在西雅图,出于某种原因,第二个日期字符串转换为PST,然后以GMT表示,结果如下: new Date("January 1, 2012") >>> Sun Jan 01 2012 00:00:00 GMT-0800 (PST) new Date("2012-01-01") >>> Sat Dec 31 2011 16:00:00 GMT-0800 (PST) 在chrome控制台中尝试上述
new Date("January 1, 2012")
>>> Sun Jan 01 2012 00:00:00 GMT-0800 (PST)
new Date("2012-01-01")
>>> Sat Dec 31 2011 16:00:00 GMT-0800 (PST)
在chrome控制台中尝试上述操作,您应该会得到相同的结果。
如何获取日期以GMT而不是PST来评估第二条语句 不要使用Date对象来解析日期字符串,它在ECMAScript ed 3中被指定为依赖于实现,并且不能在不同浏览器中一致工作。ISO8601日期字符串的一种格式是,但这种格式也不一致。手动解析字符串 要在UTC ISO8601字符串之间进行转换的两个函数:
if (!Date.prototype.toUTCISOString) {
Date.prototype.toUTCISOString = function() {
function addZ(n) {
return (n<10? '0' : '') + n;
}
function addZ2(n) {
return (n<10? '00' : n<100? '0' : '') + n;
}
return this.getUTCFullYear() + '-' +
addZ(this.getUTCMonth() + 1) + '-' +
addZ(this.getUTCDate()) + 'T' +
addZ(this.getUTCHours()) + ':' +
addZ(this.getUTCMinutes()) + ':' +
addZ(this.getUTCSeconds()) + '.' +
addZ2(this.getUTCMilliseconds()) + 'Z';
}
}
if (!Date.parseUTCISOString) {
Date.parseUTCISOString = function fromUTCISOString(s) {
var b = s.split(/[-T:\.Z]/i);
var n= new Date(Date.UTC(b[0],b[1]-1,b[2],b[3],b[4],b[5]));
return n;
}
}
var s = '2012-05-21T14:32:12Z'
var d = Date.parseUTCISOString(s);
alert('Original string: ' + s +
'\nEquivalent local time: ' + d +
'\nBack to UTC string: ' + d.toUTCISOString());
if(!Date.prototype.toutciostring){
Date.prototype.toutciosString=函数(){
函数addZ(n){
返回(n那是因为你的时区,你在“2012-01-01”
上迟到了8小时,所以它是这样显示的,对我来说,我得到了这个
new Date("January 1, 2012")
Sun Jan 01 2012 00:00:00 GMT+0530 (IST)
new Date("2012-01-01")
Sun Jan 01 2012 05:30:00 GMT+0530 (IST)
听取您可能会看到的建议或其中一个比另一个好吗?datejs有一长串未解决的错误,没有分配给任何人。moment.js更好吗?您使用的函数中的一个错误就是一个杀手。您不使用的功能中的许多错误不会影响您。请注意,清空!即使有日期库,您也必须告诉它格式,以便它知道如何使用解析字符串。所以你必须从一开始就知道格式,如果你知道格式,手动解析并不困难。