Что касается 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';