在我的html文档中,我有一个日期字段:
<input type="date" id="birthDate" class="date-picker">
我用javascript这样的日期:
var birthdate = new Date($('#birthDate').val());
做一些总和:
var today = new Date(Date.now());
var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var bornDays = Math.floor(Math.abs((today.getTime() - birthdate.getTime()) / (oneDay)));
用户在html页面上以DD / MM / YYYY格式输入日期。在Chrome浏览器中,此方法可以正常工作,并为我提供了自出生“ bornDays”以来的正确天数。 IE似乎将输入的日期解释为美国格式,即MM / DD / YYYY,因此当我将日期输入到javascript中时,它会认为日期是几个月,反之亦然。 从IE获取日期时如何指定日期为英国格式?
额外澄清:
如果用户在浏览器中输入日期09/11/2018
在Chrome中,
birthdate.getDate() returns 9
在IE中,
birthdate.getDate() returns 11
答案 0 :(得分:0)
能否将数据的每个部分(日,月和年)存储在变量中,然后按所需的顺序构造一个字符串?在所有浏览器中都可以使用。
var currentTime = new Date();
var gmt = new Date(currentTime.valueOf() + currentTime.getTimezoneOffset() * 60000);
var day = gmt.getDate();
var month = gmt.getMonth() + 1;
var year = gmt.getFullYear();
var dateString = day + '/' + month + '/' + year;
答案 1 :(得分:0)
如果您知道输入的字符串将采用DD-MM-YYYY格式,请解析并将其各个组成部分交给the Date
constructor,而不是希望Date
构造函数就能猜出输入格式。
或者,更好的是,为日/月/年(或日历小部件)提供单独的字段,这样您就不必依赖用户键入特殊格式的字符串。
答案 2 :(得分:0)
为避免在日期/时间中使用各种不同的解释,在各种不同的浏览器中,建议使用诸如MomentJS之类的库文件。
现在,假设您需要从字符串中提取date
。
var day = moment("1995-12-25");
moment().date(); //will gives you the date
以上内容将在所有浏览器中为您提供相同的答案。
MomentJS支持以下browsers,
当前,ci系统使用以下浏览器:Windows XP上的Chrome,Windows 7上的IE 8、9和10,Windows 10上的IE 11,Linux上的最新Firefox和OSX 10.8和10.11上的最新Safari。
我希望这个答案对您有帮助。
干杯。