我以为我有一个标准的ISO日期和Javascript Date()函数应该转换它没有解析,但我得到以下内容:
我的约会对象:
2015-12-08T13:42
Javascript日期函数结果:
Tue Nov 12 2075 13:42:00 GMT+0100
我的日期是不正确的格式还是我误解了数据功能?
我应该补充一点,我使用的是Adobe Illustrator CS6。我从下面尝试了一些例子,得到了相同的结果:
My code:
var start = '2015-12-08T13:42';
var test0 = new Date(start);
var test1 = new Date(start+'Z').toString();
$.writeln(test0);
$.writeln(test1);
结果:
Tue Nov 12 2075 13:42:00 GMT+0100
Tue Nov 12 2075 13:42:00 GMT+0100
答案 0 :(得分:1)
要将UTC时间指定为字符串,您需要将Z
部分添加到其中。
引自Wikipedia:
如果没有给出时间表示的UTC关系信息,则假定时间是当地时间。
如果时间是UTC,请在没有空格的时间后直接添加Z. Z是零UTC偏移的区域指示符。
我在Firefox和时区GMT + 01:00中运行以下代码段时看到了不同之处。但Edge和Chrome显示第一个输出也好像Z
在那里(这似乎与上面的引号相反),因此没有可见的区别:
var s = '2015-12-08T13:42';
console.log(new Date(s).toString());
console.log(new Date(s+'Z').toString());

确保将Date值转换为字符串的方式是正确的。 toString()
调用(在代码段中使用)将转换为当前区域设置的日期/时间。
但是如果您使用自定义函数,则需要注意一些陷阱。例如,如果您使用getMonth
或getUTCMonth
方法检索给定日期的月份编号,请注意它是从零开始的,因此12月份编号为11.如果您的字符串转换将此11解释为11月,您将关闭一个月。
答案 1 :(得分:0)
我认为你将日期设置为setUTCDate函数如果你将当前日期传递给setUTCDate函数就会出错日期
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
function myFunction() {
var d = new Date();
d.setUTCDate(2015-12-08);
document.getElementById("demo").innerHTML = d;
}
</script>
</body>
</html>
if you want get current date use Date() function
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = Date();
</script>
</body>
</html>
答案 2 :(得分:0)
我以为我有一个标准的ISO日期和Javascript Date()函数应该转换它没有解析,
要将字符串转换为日期,必须对其进行解析,否则无法避免。
但我得到以下内容: 我的约会 : 2015-12-08T13:42
Javascript日期函数结果:
Tue Nov 12 2075 13:42:00 GMT + 0100
我的日期是不正确的格式还是我误解了数据 功能
除了这一年,这是预期的结果。从ES5开始,ISO 8601格式的日期字符串由Date构造函数解析(和Date.parse,它们等同于解析)。
普通日期字符串(例如2015-12-08)应解析为UTC。如果没有提供时区,或者使用提供的时区,则应将日期和时间解析为本地。
字符串“2015-12-08T13:42”没有时区,因此将使用主机时区设置对其进行解析,以生成相当于2015年12月8日当地日期和时间的日期1 :下午42点。因此,它将代表每个时区中具有不同偏移的不同时刻。
强烈建议不要使用Date构造函数解析字符串,因为它主要依赖于实现,要么编写一个简单的函数,要么使用库。您没有说您是否希望将字符串解析为本地或UTC,这是一个简单的函数来解析它是UTC:
// 2015-12-08T13:42
function parseISOAsUTC(s) {
var b = s.split(/\D/);
return new Date(Date.UTC(b[0], --b[1], b[2], b[3], b[4], b[5]||0));
}
var d = parseISOAsUTC('2015-12-08T13:42');
console.log('Local: ' + d.toLocaleString() +
'\nUTC: ' + d.toISOString());
您应该添加一些验证来处理超出范围的值。