2012-06-12 5 views
1

У меня есть значение даты «06/12/2012» в строковом формате. Как создать объект Date Javascript, чтобы я мог выполнять до/после сравнения?Как построить объект даты javascript из строки

+1

Я предлагаю использовать 'DateJs' или' momentjs' для обработки даты в Javascript. Оригинальный конструктор 'Date' должен быть запрещен, поскольку его слишком сложно использовать. –

ответ

1
var d = new Date("06/12/2012"); 
+0

см: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date –

+0

Еще раз, не пытайтесь определить, в каком формате находится строка, вы просто надеетесь, что браузер угадывает формат. – RobG

0

Я думаю, что это может помочь вам http://www.mattkruse.com/javascript/date/

Там является getDateFromFormat() функция, которую вы можете настроить немного, чтобы решить вашу проблему.

+0

Обратите внимание, что [Date.parse] (http://es5.github.com/#x15.9.4.2) полностью зависит от реализации и определяется как принятие только одного аргумента. Это было бы -1, за исключением ссылки на сайт Мэтта Крузе. И что заставляет вас думать, что OP - m/d/y? Подавляющее большинство населения мира более склонно использовать d/m/y. – RobG

0
var date = new Date("06/12/2012"), 
    other = new Date("03/12/2012"); 

(date - other > 0? alert("after") : alert("before"); 
+0

А какая дата, на ваш взгляд, «06/12/2012»? 6 декабря или 12 июня? Почему браузер должен знать, какой из них? Умная дата сравнения, хотя, если предположить d/m/y, результат будет противоположным, если предположить m/d/y. :-) – RobG

2

Единственный надежный способ превратить строку в объект даты - это проанализировать ее. Вы должны знать формат перед рукой. Строка «06/12/2012» не соответствует какому-либо формальному стандарту, хотя, скорее всего, будет день/месяц/год, так:

// Convert string in d/m/y format to a Date object 
function toDate(s) { 
    var bits = s.split('/'); 
    return new Date(bits[2],--bits[1],bits[0]); 
} 

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

Не передавайте строку ни одному объекту объекта «Дата» и полагайтесь на хост, правильно интерпретирующий его, только формат браузеров может распознавать формат ISO8601, и даже тогда многие ошибаются.

Смежные вопросы