按间隔名称比较日期

时间:2015-07-10 13:21:24

标签: javascript date compare intervals

我正面临着在Javascript中按间隔比较日期的问题。

我必须使用在数据库中硬编码的1 year6 months等区间名称,将它们与now()进行比较,以查看所选日期是否在此区间内。

我似乎无法找到任何能够做到这一点的功能。像

这样的东西 PostgreSQL中的

now() + interval '1 year'

2 个答案:

答案 0 :(得分:0)

您可以使用获取和设置日期组件的方法。

示例:

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

将组件设置为超出范围的值将调整其他组件以形成正确的日期。例如,如果您在10月份添加六个月,以便将月份数设置为15,则会自动换行到下一年并将月份设置为4月。

使用像"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;
}

答案 1 :(得分:0)

如果我正确地遵循了这个问题,您可以使用JavaScript日期方法getFullYeargetMonth等,并使用一些逻辑:

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/