2

ユーザーの生年月日をタイムスタンプに保存します。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;

私の質問: これらの方法はうるう年は安全ですか、それともうるう年のために問題が発生する可能性がありますか?最初の部分は大丈夫だと確信していますが(そうでない場合は訂正してください)、2番目の部分では、年齢からタイムスタンプを計算するときに、うるう年をどのように考慮すればよいかわかりません。誰かが何か考えを持っていますか?

Tnx

4

2 に答える 2

1

2 番目のサンプルで作成する日付は、指定された年の 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 の間にある場合、年齢は正しいです。

于 2012-07-31T10:47:26.153 に答える
0

大丈夫です。Date オブジェクトは閏年を考慮しますが、閏秒は考慮しません :)

日付をいろいろいじっている場合は、isLeapYear() などの API メソッドを含むhttp://tempus-js.com/のようなものを見たいと思うかもしれません。

于 2012-07-31T10:50:16.547 に答える