簡體   English   中英

如何獲取適用於所有瀏覽器的javascript日期分割代碼?

[英]How to I get javascript date split code to work for all browsers?

我有一段可在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();

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

當我這樣做時,它將無法在Chrome或MSIE中運行。

有沒有辦法讓此代碼在所有瀏覽器中都能使用?

永遠不要使用Date構造函數或Date.parse(它們做同樣的事情)來解析字符串,因為它幾乎完全依賴於實現且不可靠。 總是手動解析字符串,庫可以提供幫助,但是如果您只需要支持一種或兩種格式,則定制功能是微不足道的。

鑒於您有:

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

我懷疑結尾是“ dd.mm.yyyy”之類的東西,所以將最后一行替換為:

var someDate = new Date(parts[2], parts[1]-1, parts[0]);

自從javascript發明以來,它便可以在所有瀏覽器中使用。

編輯

假定日期字符串為“ dd.mm.yyyy”,則不管分隔符如何,解析它的簡單函數為:

 /* Parse date string in format d/m/y ** @param {string} s - date string ** @returns {Date} date object */ function parseDMY(s) { var b = s.split(/\\D/); return new Date(b[2], b[1]-1, b[0]); } document.write(parseDMY('23.01.2016')); 

假定值是有效日期,並且允許使用任何非數字分隔符,因此dmy,d / m / y和dmy都是可以接受的。

我的建議是使用類似jquery的東西來操作DOM。 jQuery添加了一個抽象級別,可以避免必須使代碼適應“單一瀏覽器標准”,因為盡管今天(比幾年前)要好一些,但是基本上還沒有真正的標准。

因此,例如,如果您執行$('#mydate'),jquery將在每個瀏覽器中檢索該元素(使用IE getElementById等),而您無需擔心代碼會跨瀏覽器了。

$('#mydate')。val()//假設它是輸入,將檢索該值,然后您就可以使用自己的邏輯了。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM