如何让javascript日期分割代码适用于所有浏览器?

如何让javascript日期分割代码适用于所有浏览器?,javascript,google-chrome,firefox,Javascript,Google Chrome,Firefox,我有一段代码可以在Chrome和MSIE中运行,但在Opera和Firefox中失败 var end = Browser.getValue(getElement("mydate")); var parts = end.split('.'); var us_date = parts[1]+'/'+parts[0]+'/'+parts[2]; var someDate = new Date(us_date); var numberOfDaysRemove = 1; someDate.setDat

我有一段代码可以在Chrome和MSIE中运行,但在Opera和Firefox中失败

var end = Browser.getValue(getElement("mydate"));
var parts = end.split('.');
var us_date = parts[1]+'/'+parts[0]+'/'+parts[2];


var someDate = new Date(us_date);
var numberOfDaysRemove = 1;
someDate.setDate(someDate.getDate() - numberOfDaysRemove);

var returndate = someDate.getDate() + '.' + (someDate.getMonth() + 1) + '.' + someDate.getFullYear() + " " + someDate.getHours() + ':' + someDate.getMinutes();
我知道为什么它在Opera和Firefox中不起作用,因为我需要替换

var parts = end.split('.');
var returndate = someDate.getDate() + '.' + (someDate.getMonth() + 1) + '.' + someDate.getFullYear() + " " + someDate.getHours() + ':' + someDate.getMinutes();

当我这样做的时候,它在Chrome或MSIE中就不起作用了


有没有办法让这段代码在所有浏览器中运行?

您应该永远不要使用日期构造函数或Date.parse解析字符串(它们做同样的事情),因为它几乎完全依赖于实现且不可靠始终手动解析字符串,库可以提供帮助,但如果您只需要支持一种或两种格式,则定制函数很简单

鉴于你有:

var end = Browser.getValue(getElement("mydate"));
var parts = end.split('.');
var us_date = parts[1]+'/'+parts[0]+'/'+parts[2];
我怀疑end类似于“dd.mm.yyyy”,所以将最后一行替换为:

var someDate = new Date(parts[2], parts[1]-1, parts[0]);
自从javascript被发明以来,它将在每一个浏览器中工作

编辑 假定日期字符串为“dd.mm.yyyy”,则不管分隔符是什么,解析该字符串的简单函数如下:

/*解析格式为d/m/y的日期字符串
**@param{string}s-日期字符串
**@返回{Date}Date对象
*/
函数parseDMY(s){
var b=s.split(/\D/);
返回新日期(b[2],b[1]-1,b[0]);
}

文件编写(parseDMY('23.01.2016')您应该永远不要使用日期构造函数或Date.parse解析字符串,因为它几乎完全依赖于实现且不可靠始终手动解析字符串,库可以提供帮助,但如果您只需要支持一种或两种格式,则定制函数很简单

鉴于你有:

var end = Browser.getValue(getElement("mydate"));
var parts = end.split('.');
var us_date = parts[1]+'/'+parts[0]+'/'+parts[2];
我怀疑end类似于“dd.mm.yyyy”,所以将最后一行替换为:

var someDate = new Date(parts[2], parts[1]-1, parts[0]);
自从javascript被发明以来,它将在每一个浏览器中工作

编辑 假定日期字符串为“dd.mm.yyyy”,则不管分隔符是什么,解析该字符串的简单函数如下:

/*解析格式为d/m/y的日期字符串
**@param{string}s-日期字符串
**@返回{Date}Date对象
*/
函数parseDMY(s){
var b=s.split(/\D/);
返回新日期(b[2],b[1]-1,b[0]);
}

文件编写(parseDMY('23.01.2016')我的建议是使用类似jquery的东西来操作DOM。 Jquery增加了一个抽象级别,可以避免将代码调整为“单一浏览器标准”,因为即使今天比几年前好了一点,基本上仍然没有真正的标准

例如,如果您使用$('#mydate'),jquery将在每个浏览器中检索该元素(使用IE getElementById等),您就不必再担心代码是跨浏览器的

$(“#mydate”).val()//假设它是一个输入,将检索该值,然后您可以使用自己的逻辑


希望有帮助。

我的建议是使用jquery之类的工具来操作DOM。 Jquery增加了一个抽象级别,可以避免将代码调整为“单一浏览器标准”,因为即使今天比几年前好了一点,基本上仍然没有真正的标准

例如,如果您使用$('#mydate'),jquery将在每个浏览器中检索该元素(使用IE getElementById等),您就不必再担心代码是跨浏览器的

$(“#mydate”).val()//假设它是一个输入,将检索该值,然后您可以使用自己的逻辑


希望能有帮助。

你试过使用矩.js吗?从没听说过矩.js。我是JSI新手,我不明白为什么要使用Browser.getValue(getElement(“mydate”);请告诉我有关您的用例的更多信息..对不起。。其中有一个元素id。。我只是把它重命名为mydate。。它是EU格式(dd.MM.YYYY),所以我需要拆分并重置为US日期格式,这样我才能使用JS日期函数。“如何让javascript代码适用于所有浏览器”-每个开发人员都尝试过使用矩.JS吗?从来没有听说过矩.JS。我是JSI新手,我不明白为什么要使用Browser.getValue(getElement(“mydate”);请告诉我有关您的用例的更多信息..对不起。。其中有一个元素id。。我只是把它重命名为mydate。。它是EU格式(dd.MM.YYYY),所以我需要拆分并重置为US日期格式,这样我就可以使用JS日期函数。“如何让javascript代码适用于所有浏览器”-每个开发人员-我如何避免拆分?它在Chrome中显示为“dd.mm.yyyy”,但在Firefox中显示为“dd/mm/yyyy”,因此使用“.”拆分不起作用,或者我只是获取值,然后使用您添加的行而不拆分?尝试了该建议,但返回了无效的日期消息。我如何绕过拆分?它在Chrome中显示为“dd.mm.yyyy”,但在Firefox中显示为“dd/mm/yyyy”,因此使用“.”拆分不起作用,或者我只是获取值,然后使用您添加的行而没有拆分?尝试了该建议,但返回了无效的日期消息。我对Jquery没有任何线索。我在寻找一个纯JS解决方案,我对Jquery一无所知。正在寻找一个纯JS解决方案