Получить дату от IE в формате Великобритании - PullRequest
0 голосов
/ 09 ноября 2018

В моем 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-странице. В Chrome это работает нормально и дает мне правильное количество дней с момента рождения bornDays. Однако IE, по-видимому, интерпретирует введенную дату как американский формат, то есть ММ / ДД / ГГГГ, поэтому, когда я помещаю дату в javascript, он считает дни месяцами и наоборот. Как я могу указать, что дата в британском формате при получении из IE?

ДОПОЛНИТЕЛЬНАЯ РАЗЪЯСНЕНИЕ:

Если пользователь вводит дату 11/11/2018 в браузере

в Chrome, birthdate.getDate() returns 9

В IE
birthdate.getDate() returns 11

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018

Если вы знаете, что введенная строка будет в форме ДД-ММ-ГГГГ, проанализируйте ее и передайте ее отдельные компоненты конструктору Date вместо надежды на * Конструктор 1006 * сможет угадать по формату ввода.

Или, что еще лучше, предоставьте отдельные поля для дня / месяца / года (или виджета календаря), чтобы вы не зависели от пользователей при вводе специально отформатированной строки.

0 голосов
/ 09 ноября 2018

Чтобы избежать разных интерпретаций даты / времени, в разных браузерах рекомендуется использовать библиотеку, например MomentJS .

Теперь предположим, что вам нужно вывести date из строки.

var day = moment("1995-12-25");
moment().date(); //will gives you the date

Выше приведен один и тот же ответ во всех браузерах.

MomentJS поддерживает следующие браузеры ,

В настоящее время для системы ci используются следующие браузеры: Chrome в Windows XP, IE 8, 9 и 10 в Windows 7, IE 11 в Windows 10, последний Firefox в Linux и последний Safari в OSX 10.8 и 10.11.

Надеюсь, вы найдете этот ответ полезным.

Приветствие.

0 голосов
/ 09 ноября 2018

Не могли бы вы сохранить каждую часть данных - день, месяц и год в переменных, а затем построить строку в нужном вам порядке? Это должно работать во всех браузерах.

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...