トップページ > プログラム > 2016年07月17日 > oPCVgRrM

書き込み順位&時間帯一覧

18 位/163 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000120000000003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
+ JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net

書き込みレス一覧

+ JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
193 :デフォルトの名無しさん[sage]:2016/07/17(日) 13:50:05.02 ID:oPCVgRrM
ある誕生日からある日付時の年齢を計算しようと
console.log( (new Date('2010-6-2') - new Date('1996-10-21'))/(1000*60*60*24*365)|0);//13
console.log( (new Date('2010-10-18') - new Date('1996-10-21'))/(1000*60*60*24*365)|0);//14
でやってみたのですがどうも合っていない気がします
  0歳 1996年10月21日
  1歳 1997年10月21日
 13歳 2010年06月02日
 14歳 2010年10月18日?
 14歳 2010年10月21日
初心者考えに「タイムスタンプで差分出して年間のミリ秒で割ればおk♪」と期待していたのに出来なくてショックででした(泣

そこで、ぐぐってみて修正したところ
function calculateAge (birthday, when) {
var b = new Date(birthday.getTime()).setFullYear(2000);
var w = new Date(when.getTime()).setFullYear(2000);
return when.getFullYear() - birthday.getFullYear() - (w >= b ? 0: 1);
}
console.log(calculateAge(new Date('1996-10-21'),new Date('2010-6-2')));//13
console.log(calculateAge(new Date('1996-10-21'),new Date('2010-10-18')));//13
console.log(calculateAge(new Date('1996-10-21'),new Date('2010-10-21')));//14
これで上手くいってるみたいです
が、理由がよくわかりません

setFullYearで2000年をまたぐ部分の処理をしているみたいですが
一体何のために処理をしているのでしょうか?
chrome
+ JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
196 :デフォルトの名無しさん[sage]:2016/07/17(日) 14:28:20.51 ID:oPCVgRrM
>>195
使いたいのは山々なのですがchrome拡張内のコンソールで使おうとすると
拡張別にライブラリ導入の仕様が異なったり
他のライブラリと併用するととても野暮ったくなってしまうのです
+ JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
198 :デフォルトの名無しさん[sage]:2016/07/17(日) 14:46:55.90 ID:oPCVgRrM
別のタグに干渉したいときとか、windowを参照してくれたりしてくれなかったり、
別タグ移動、もしくは再読み込みした場合に、またライブラリを読みなおししないといけなかったり
その状態で長時間回すと止まったり、
拡張によって仕様が違うのでゴリ押しで導入してもエラーを吐く場合があるのです


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。