toISOstring 在 JavaScript 中不起作用
toISOstring not working in JavaScript
我将日期作为字符串给出,然后尝试将其转换为 ISO。
这是我一直在做的事情:
var dateValue = "Tue Sep 29 2015 16:50:00 GMT+0530 (IST)"
alert(dateValue.toISOString());
但这会返回以下错误
"toISOString is not a function"
这是为什么?
Why is this?
因为你的 dateValue
是一个 字符串 ,并且 toISOString
不是字符串方法(它是日期)。
要使用它,您需要一个 Date
对象。规范中 无法保证 您显示的格式将被 JavaScript 中内置的任何内容成功解析,因此您需要使用 做出这样的保证:要么是你自己的代码,要么是像 MomentJS 这样的库。
有问题的格式如果稳定的话很容易解析:
var months = {
jan: 0,
feb: 1,
mar: 2,
apr: 3,
may: 4,
jun: 5,
jul: 6,
aug: 7,
sep: 8,
oct: 9,
nov: 10,
dec: 11
};
var dateValue = "Tue Sep 29 2015 16:50:00 GMT+0530 (IST)";
var rex = /^.{4}(.{3}) (\d{2}) (\d{4}) (\d{2}):(\d{2}):(\d{2}) GMT([+-]\d{4})/;
var data = dateValue.match(rex);
snippet.log("Day: " + data[2]);
snippet.log("Month: " + months[data[1].toLowerCase()]);
snippet.log("Year: " + data[3]);
snippet.log("Hour: " + data[4]);
snippet.log("Minute: " + data[5]);
snippet.log("Second: " + data[6]);
snippet.log("Offset: " + data[7]);
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
...然后只需使用 new Date(year, month, ...)
构造函数创建日期,并根据偏移量调整时间(一定要在 Date
上使用 UTC 方法)。
我将日期作为字符串给出,然后尝试将其转换为 ISO。
这是我一直在做的事情:
var dateValue = "Tue Sep 29 2015 16:50:00 GMT+0530 (IST)"
alert(dateValue.toISOString());
但这会返回以下错误 "toISOString is not a function"
这是为什么?
Why is this?
因为你的 dateValue
是一个 字符串 ,并且 toISOString
不是字符串方法(它是日期)。
要使用它,您需要一个 Date
对象。规范中 无法保证 您显示的格式将被 JavaScript 中内置的任何内容成功解析,因此您需要使用 做出这样的保证:要么是你自己的代码,要么是像 MomentJS 这样的库。
有问题的格式如果稳定的话很容易解析:
var months = {
jan: 0,
feb: 1,
mar: 2,
apr: 3,
may: 4,
jun: 5,
jul: 6,
aug: 7,
sep: 8,
oct: 9,
nov: 10,
dec: 11
};
var dateValue = "Tue Sep 29 2015 16:50:00 GMT+0530 (IST)";
var rex = /^.{4}(.{3}) (\d{2}) (\d{4}) (\d{2}):(\d{2}):(\d{2}) GMT([+-]\d{4})/;
var data = dateValue.match(rex);
snippet.log("Day: " + data[2]);
snippet.log("Month: " + months[data[1].toLowerCase()]);
snippet.log("Year: " + data[3]);
snippet.log("Hour: " + data[4]);
snippet.log("Minute: " + data[5]);
snippet.log("Second: " + data[6]);
snippet.log("Offset: " + data[7]);
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
...然后只需使用 new Date(year, month, ...)
构造函数创建日期,并根据偏移量调整时间(一定要在 Date
上使用 UTC 方法)。