2012-07-31 102 views
2

我在時間戳中存儲用戶出生日期。我用JavaScript計算時間戳。來自幾年前的JavaScript時間戳,並考慮閏年

day = $("#birthday-day").val(); 
year = $("#birthday-year").val(); 
month = $("#birthday-month").val()-1;  
date = new Date(Date.UTC(year, month, day)); 
birthdateTimestamp = Math.round(date.getTime()/1000); 

在搜索頁面我只有年齡段。依靠這個字段,我需要顯示符合這個年齡段的用戶。我根據年齡字段值時間戳計算,所以我可以在數據庫中將它用作條件。

now = new Date(); 
age = $("#age").val(); 
date = new Date(Date.UTC(now.getFullYear()-age)); 
timestampYearsAgo = date.getTime()/1000; 

我的問題: 這些方法是閏年安全或者我可以有,因爲閏年​​的任何問題?我確信第一部分是可以的(如果不是,請糾正我),但對於第二部分,當我從年齡計算時間戳時,我不確定如何才能做到閏年。有人有任何想法嗎?

TNX

回答

1

你的第二個樣本中創建的日期對應1/1的某一年(因爲你只供應年,日和月默認爲0)。這可能不是你想要的。

如果你希望人們誰是今天了一定的年齡,你應該創建相當於今天的日期,然後。減去這些年來,如:

var lowDate = new Date; 
lowDate.setFullYear(lowDate.getFullYear() - age)); 
lowTimestamp = lowDate.getTime() 
var highDate = new Date; 
highDate .setFullYear(highDate .getFullYear() - age + 1)); 
highTimestamp = highDate.getTime() 

如果一個生日時間戳lowTimestamp和highTimestamp歲之間是正確的。

0

它的確定,Date對象將佔閏年的你,但沒有閏秒:)

如果您正在使用日期玩弄了很多,你可能想看看像http://tempus-js.com/其中包括API方法, asLeapYear()。