Что касается JavaScript, новый Date() и Date.parse()
Это мой код:
var exampleDate='23-12-2010 23:12:00';
var date=new Date(exampleDate);//returns invalid Date
var date1=Date.parse(exampleDate);//returns NAN
Я хочу преобразовать приведенную выше строку в дату. Поэтому я написал код, как вы видели выше.
Этот код работает нормально в IE
и Opera
, но переменная date
возвращает мне неверную дату и date1
возвращает NAN
в mozilla Firefox
, что мне делать?
Ответы
Ответ 1
Формат выше поддерживается только в IE и Chrome.
попробуйте другие форматы. Ниже приведены некоторые форматы и поддерживающие браузеры.
<script type="text/javascript">
//var dateString = "03/20/2008"; // mm/dd/yyyy [IE, FF]
var dateString = "2008/03/20"; // yyyy/mm/dd [IE, FF]
// var dateString = "03-20-2008"; // mm-dd-yyyy [IE, Chrome]
// var dateString = "March 20, 2008"; // mmmm dd, yyyy [IE, FF]
// var dateString = "Mar 20, 2008"; // mmm dd, yyyy [IE, FF]
// Initalize the Date object by passing the date string variable
var myDate = new Date(dateString);
alert(myDate);
</script>
Ответ 2
Строка в вашем примере не входит ни в один из стандартных форматов, распознаваемых браузерами. Спецификация ECMAScript требует, чтобы браузеры могли анализировать только один стандартный формат:
Формат выглядит следующим образом: YYYY-MM-DDTHH:mm:ss.sssZ
Этот формат включает в себя только даты:
YYYY
YYYY-MM
YYYY-MM-DD
Он также включает в себя формы только времени с дополнительным добавлением смещения часового пояса:
THH:mm
THH:mm:ss
THH:mm:ss.sss
Также включены "даты-времена", которые могут быть любой комбинацией из вышеперечисленного.
Если строка не соответствует этому формату, функция может вернуться к любому специфичные для реализации эвристики или конкретные форматы дат реализации. Неузнаваемые строки или даты содержащие недопустимые значения элементов в формате String, должны вызывать Date.parse для возврата NaN.
Итак, в вашем примере использование 2010-12-23T23:12:00
- это единственная строка, которая может работать. На практике большинство браузеров также допускают даты формата DD Month YYYY
или Month DD, YYYY
, поэтому могут работать и строки типа 23 Dec 2010
и Dec 23, 2010
.
Ответ 3
Вы можете разобрать его вручную с помощью обычного выражения, а затем вызвать конструктор даты с элементами даты, как таковой:
var parseDate = function(s) {
var re = /^(\d\d)-(\d\d)-(\d{4}) (\d\d):(\d\d):(\d\d)$/;
var m = re.exec(s);
return m ? new Date(m[3], m[2]-1, m[1], m[4], m[5], m[6]) : null;
};
var dateStr = '23-12-2010 23:12:00';
parseDate(dateStr).toString(); //=> Thu Dec 23 2010 23:12:00 GMT-0800
Ответ 4
JavaScript должен поддерживать преобразование, по крайней мере, со следующих dateStrings:
* yyyy/MM/dd
* MM/dd/yyyy
* MMMM dd, yyyy
* MMM dd, yyyy
Попробуйте:
var exampleDate='12/23/2010 23:12:00';
var date = new Date(exampleDate);
Ответ 5
Используйте datejs и этот код:
var exampleDate='23-12-2010 23:12:00';
var myDate = Date.parseExact(exampleDate, 'dd-MM-yyyy hh:mm:ss');
myDate
должен быть правильно построенным объектом Date
.
Ответ 6
Просто используйте в этом формате:
var exampleDate='2010-12-23 23:12:00';