toISOstring在JavaScript中不起作用

toISOstring在JavaScript中不起作用,javascript,timezone,Javascript,Timezone,我以字符串形式给出日期,然后尝试将其转换为ISO 以下是我一直在做的事情: var dateValue = "Tue Sep 29 2015 16:50:00 GMT+0530 (IST)" alert(dateValue.toISOString()); 但这是返回给我以下错误 “toISOString不是函数” 为什么会这样 为什么会这样 因为您的dateValue是一个字符串,而toISOString不是字符串上的方法(它是在日期上) 要使用它,您需要一个Date对象。规范中不保证您所显示

我以字符串形式给出日期,然后尝试将其转换为ISO

以下是我一直在做的事情:

var dateValue = "Tue Sep 29 2015 16:50:00 GMT+0530 (IST)"
alert(dateValue.toISOString());
但这是返回给我以下错误 “toISOString不是函数”

为什么会这样

为什么会这样

因为您的
dateValue
是一个字符串,而
toISOString
不是字符串上的方法(它是在日期上)

要使用它,您需要一个
Date
对象。规范中不保证您所显示的格式将被内置在JavaScript中的任何东西成功解析,因此您需要使用某种东西来解析它,以确保这一点:您自己的代码,或者像MomentJS这样的库

如果所讨论的格式稳定,则很容易解析:

var月={
一月零日,,
2月1日,
3月2日,
四月三日,
五月四日,
六月五号,,
七月六日,
八月七日,
九月八日,
10月9日,
11月10日,
十二月十一日
};
var dateValue=“2015年9月29日星期二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);
log(“Day:+data[2]);
log(“月:+months[data[1].toLowerCase());
log(“年份:+数据[3]);
log(“Hour:+data[4]);
log(“分钟:+数据[5]);
log(“第二个:“+data[6]);
log(“偏移量:“+data[7])

为什么会这样

因为您的
dateValue
是一个字符串,而
toISOString
不是字符串上的方法(它是在日期上)

要使用它,您需要一个
Date
对象。规范中不保证您所显示的格式将被内置在JavaScript中的任何东西成功解析,因此您需要使用某种东西来解析它,以确保这一点:您自己的代码,或者像MomentJS这样的库

如果所讨论的格式稳定,则很容易解析:

var月={
一月零日,,
2月1日,
3月2日,
四月三日,
五月四日,
六月五号,,
七月六日,
八月七日,
九月八日,
10月9日,
11月10日,
十二月十一日
};
var dateValue=“2015年9月29日星期二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);
log(“Day:+data[2]);
log(“月:+months[data[1].toLowerCase());
log(“年份:+数据[3]);
log(“Hour:+data[4]);
log(“分钟:+数据[5]);
log(“第二个:“+data[6]);
log(“偏移量:“+data[7])


这是因为
toISOString()
是由
Date
对象而不是字符串公开的。文档这是因为
toISOString()
是由
Date
对象而不是字符串公开的