2012-07-03 3 views
3

Есть ли простой способ сравнить sql dateTime с датой javascript, чтобы эти два можно было легко сравнить?сравнить sql date to javascript date

Есть ли встроенный в JavaScript функции, как я могу изменить SQL

+1

Вы должны предоставить более подробную информацию о том, с какими технологиями вы работаете, как вы получаете дату от SQL, через веб-сервис или на какую-либо серверную вещь и т. Д. – Tariqulazam

+0

[взгляните на это] (http://stackoverflow.com/questions/7748205/compare-date-in-sql-statement) и продолжайте. – Jebin

ответ

3

Чтобы преобразовать MySQL DATETIME строку в объект Date JavaScript:

 var sqlDateStr = "2012-01-02 23:58:59"; // as for MySQL DATETIME 
     sqlDateStr = sqlDateStr.replace(/:| /g,"-"); 
     var YMDhms = sqlDateStr.split("-"); 
     var sqlDate = new Date(); 
     sqlDate.setFullYear(parseInt(YMDhms[0]), parseInt(YMDhms[1])-1, 
               parseInt(YMDhms[2])); 
     sqlDate.setHours(parseInt(YMDhms[3]), parseInt(YMDhms[4]), 
               parseInt(YMDhms[5]), 0/*msValue*/); 
     alert(sqlDate); 
+0

он работает, только в том случае, если часы - это что-то между 01 и 09, parseInt (YMDhms [3]) возвращает 0 !! вы можете это исправить? –

+0

Извините, не удается воспроизвести ваш сбой. Если i, т.е. используйте консоль разработчика Opera32.0/Linux (Ctrl + I), затем я получаю следующее: –

+0

var sqlDateStr = "2012-01-02 07:08:09"; sqlDateStr = sqlDateStr.replace (/: |/g, "-"); console.log (sqlDateStr); var YMDhms = sqlDateStr.split ("-"); console.log (YMDhms); console.log ("YMDhms [3] =" + parseInt (YMDhms [3])); 2012-01-02-07-08-09 ["2012", "01", "02", "07", "08", "09"] YMDhms [3] = 7 –

1

Как вы получить доступ к SQL DateTime в JavaScript. Предполагаю, что у вас это как строка. Встроенная функция js Date.parse() может анализировать множество строк и возвращать объект js Date.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse

Если дата SQL возвращается в пользовательском формате, вам нужно будет вручную разбить его на соответствующий год, месяц, дата, часы, мин, второй компоненты и собрать объект Date, используя соответствующий конструктор Date().

1

исправить ParseInt (08) и ParseInt (09), используйте ParseInt (08,10) ParseInt (09,10).

В номерах Javascript, начиная с нуля, считаются восьмеричными, а в восьмеричном - 08 или 09, поэтому проблема.

http://www.ventanazul.com/webzine/articles/issues-parseint-javascript

+0

Не все браузер интерпретирует ведущий ноль (в качестве входных данных) как восьмеричный спецификатор. Например. Opera 32.0/Linux (см. Мой ответ выше) принимает значение «0100» в INPUT как десятичное число 64, но parseInt из «07» приводит к 7 десятичным знакам. –

+0

Также parseInt ("077") оценивает до 77 десятичных знаков. –

5

Предполагая, что строка даты приходит из SQL:

>>> new Date('2012-11-10 15:16:17') 
Date {Invalid Date} 

>>> new Date('2012-11-10T15:16:17') 
Date {Sat Nov 10 2012 15:16:17 GMT+0100} 

>>> new Date('2012-11-10 15:16:17'.replace(' ', 'T')) 
Date {Sat Nov 10 2012 15:16:17 GMT+0100} 

Вы можете обрабатывать входные данные из любой временной зоны путем добавления смещения, как это для лондонского времени:

>>> new Date('2012-11-10 15:16:17'.replace(' ', 'T') + '+00:00') 
Date {Sat Nov 10 2012 16:16:17 GMT+0100} 

К сравните две даты в JavaScript, просто вычтите их, чтобы вернуть разницу в миллисекундах:

>>> var d1 = new Date('2012-11-10T15:16:17'); var d2 = new Date('2012-11-10T15:16:18'); d2 - d1 
1000 

Here's a nice class по месяцам и таким.