[英]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.