以英国格式从IE获取日期

时间:2018-11-09 10:34:25

标签: javascript html date

在我的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

3 个答案:

答案 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。

我希望这个答案对您有帮助。

干杯。