formatDate JavaScript 函数仅适用于 Chrome

formatDate JavaScript function only works in Chrome

本文关键字:适用于 Chrome 函数 JavaScript formatDate      更新时间:2023-09-26

我有一个JavaScript函数,在Chrome中没有问题,但在Firefox或Safari等其他浏览器中则不然:

function formatDate(date){
    var result =  date.getFullYear() + "-" + 
    (((date.getMonth()+1)<10?'0':'') + (date.getMonth()+1)) + "-" + 
    date.getDate() + " " + date.getHours() + ":" + 
    (date.getMinutes()<10?'0':'') + date.getMinutes() + ":00";
    console.log("formatDate(): " + result);
    return result;
}

这是调用 formatDate 函数的地方:

var duration = 1;
var startString = $("#inputDatetime").val();
var startObject = new Date(startString);
var endObject = startObject;
endObject.setHours(startObject.getHours() + duration);
var endString = formatDate(endObject);
setCookie("start", startString, 3600*60*24*30);
setCookie("end", endString, 3600*60*24*30);

铬输出:

formatDate(): 2013-11-18 17:00:00

火狐输出:

formatDate(): NaN-NaN-NaN NaN:NaN:00

首选输出类似于 2013-11-21 16:00:00 .

我必须更改哪些内容才能在所有浏览器中支持它?

问题是只有 Chrome 支持 new Date(startDate) ;

我使用时刻的解决方案.js:

var duration = 1;
var startString = $("#inputDatetime").val();
var endObject = moment(startString).add('hours',duration);
var endString = moment(endObject).format("YYYY-MM-DD HH:mm");
setCookie("start", startString, 3600*60*24*30);
setCookie("end", endString, 3600*60*24*30);

只需使用

var startObject = new Date(startString.replace(/'-/g,''/'));