2015-07-10 3 views
0

Мне грозит проблема сравнения дат по интервалу в Javascript.Сравнение дат по интервалу

Я должен использовать имена интервалов, таких как 1 year, 6 months и т.д., которые жестко закодированы в базе данных, чтобы сравнить их с now(), чтобы увидеть, если выбранная дата находится в пределах этого интервала.

Кажется, я не могу найти функцию, которая может это сделать. Что-то вроде

now() + interval '1 year' в PostgreSQL

+0

Вам понадобится библиотека для этого ... хорошие варианты: [moment.js] (http://momentjs.com/) –

+0

Вам не нужны библиотеки ... я бы просто использовал временные метки. получить «временную отметку начала» и «конечную метку времени» из вашего интервала и посмотреть, если метка «now()» находится между остальными. – messerbill

ответ

0

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

Пример:

var d = new Date(); 
 
d.setMonth(d.getMonth() + 6); 
 
document.write(d);

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

Использование строки, такой как "6 months", было бы просто вопросом разбора строки и правильной манипуляцией. Пример:

var d = new Date(); 
var s = '6 months'; 

var p = s.split(' '); 
var n = parseInt(p[0], 10); 
switch (p[1]) { 
    case 'year': 
    case 'years': d.setFullYear(d.getFullYear() + n); break; 
    case 'month': 
    case 'mongths': d.setMonth(d.getMonth() + n); break; 
    case 'day': 
    case 'days': d.setDate(d.getDate() + n); break; 
} 
0

Если я следую за вопрос правильно, вы можете использовать методы JavaScript Дата getFullYear, getMonth и т.д., с немного логики:

var datestring = "1992-06-22"; 
 
var d = new Date(datestring); // date from sql 
 

 
var year = d.getFullYear(); 
 
var month = d.getMonth(); 
 

 
if (year == 2015) 
 
    document.write("This year"); 
 
else if (year > 2005) 
 
    document.write("Within last ten years") 
 
else if (year > 1965) 
 
    document.write("Within last fifty years") 
 

 
if (year == 2015 && month < 6) 
 
    document.write("First six months of this year") 
 

 
//and so on

http://jsfiddle.net/uuy2d2fk/