我面臨的問題是在JavaScript中按時間間隔比較日期。通過時間間隔名稱比較日期
我不得不使用間隔名稱,如1 year
,6 months
等,這在數據庫中比較他們對now()
硬編碼,看是否有選擇的日期是這個區間內。
我似乎無法找到任何可以做到這一點的功能。喜歡的東西
now() + interval '1 year'
PostgreSQL中
我面臨的問題是在JavaScript中按時間間隔比較日期。通過時間間隔名稱比較日期
我不得不使用間隔名稱,如1 year
,6 months
等,這在數據庫中比較他們對now()
硬編碼,看是否有選擇的日期是這個區間內。
我似乎無法找到任何可以做到這一點的功能。喜歡的東西
now() + interval '1 year'
PostgreSQL中
您可以使用獲得方法和設置日期組件。
實施例:
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;
}
如果我正確地遵循了問題,你可以使用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
你將需要使用一個庫...一個很好的選擇是[moment.js](http://momentjs.com/) –
沒有你需要任何庫....我只會使用時間戳。如果「now()」時間戳在其他時間戳之間,則從您的時間間隔中獲取「開始時間戳記」和「結束時間戳記」。 – messerbill