- ベストアンサー
○歳△ヶ月と×日を計算してくれるJavaScriptを教えてください。
今は「生後○日になりました」というカウントアップのJavaScriptを使用しています。1歳の誕生日を迎たので「○歳△ヶ月と×日になりました」というものに変えたいと思っています。 いくつかのJavaScriptのサイトを探してみましたが、今使用しているカウントアップは見つかりますが、今回変えたいと思っているものが見当たりません。 「○歳△ヶ月と×日になりました」というJavaScriptのソースを教えてください。 子供は2003年3月1日生まれです。よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
返信見ました。 「△ヶ月」の表示ですが、前掲のスクリプトでは0になる単位の表示(0ヶ月、0日)を排除するように組んであります。 その結果として、今月は生まれ月にあたり0ヶ月となるため、今月分では表示されないようになっています。 3月以外の月では正常に表示されると思います。 試しに、 nm=now.getMonth(); となっている行の前に now.setMonth(3); という行を入れて試してみて下さい。 こうすると、現在時刻を4月にセットしなおすことができるので、4月に表示される内容をチェックすることができます。 もし、現状で1歳0ヶ月と13日というような表示にしたい場合は、 age=ageY+"歳"; if (ageM!=0){ age+=ageM+"ヶ月";} if (ageD!=0){ age+="と"+ageD+"日";} この部分を、 age=ageY+"歳"+ageM+"ヶ月と"+ageD+"日"; こちらの記述に置き換えて下さい。 参考になれば…
その他の回答 (4)
日齢の計算に少々難しいところがあるので、これが正確な値を示せているかどうかについての検証がまだ不十分なところがあるとは思いますが、とりあえず以下のようなソースではいかがでしょうか。 <html> <head> <title></title> <script type="text/javascript"> <!-- now=new Date(); birth=new Date("mar 1, 2003 00:00:00"); // ←誕生日を設定 ny=now.getYear(); by=birth.getYear(); ageY=ny-by; nm=now.getMonth(); bm=birth.getMonth(); ageM=nm-bm; nd=now.getDate(); bd=birth.getDate(); ageD=nd-bd; if (ageD<0){ ageM--; if (nm==0 || nm==2 || nm==4 || nm==6 || nm==7 || nm==9 || nm==11){ ageD+=31; } else if(nm==1){ if (ny/4==Math.floor(ny/4)){ ageD+=29;} else { ageD+=28;} } else { ageD+=30;} } if (ageM<0){ ageY--; ageM+=12;} age=ageY+"歳"; if (ageM!=0){ age+=ageM+"ヶ月";} if (ageD!=0){ age+="と"+ageD+"日";} // --> </script> </head> <body> <script type="text/javascript"><!-- document.write("○○は"+age+"になりました。"); //--></script> </body> </html> 見当違い・不具合がありましたら、ごめんなさい。
お礼
ありがとうございます。 きちんと作動しました!ただ、「△ヶ月」というのが表示されないんです。これもできれば表示したいのです。
- Joh_Taka
- ベストアンサー率76% (222/292)
なんか、面白そうなので、私の方からも一つ・・。 但し、全く自信なし。 う~ん・・なんか違う気がするなー。 <html> <head> <meta http-equiv="content-type" content="text/html;charset=shift_jis"> <title>誕生時カウントアップ サンプル</title> <!-- *** ここから ***--> <script type="text/javascript"> <!-- BirthCount=new Date(); YearA=BirthCount.getFullYear()-2004; YearB=BirthCount.getFullYear()-2003; Month=BirthCount.getMonth()+1; Day=BirthCount.getDate(); //--> </script> <!-- *** ここまでをHEADタグ内に入れます *** --> </head> <body> <!-- $$$ ここから $$$ --> <script type="text/javascript"> <!-- if(Month>=3){ document.write("今日で",YearB,"歳"); /* ←その年の誕生日前の年表示と文字列 */ } else if(Month<3){ document.write("今日で",YearA,"歳"); /* ←その年の誕生日後の年表示と文字列 */ } if(Month==12){ document.write("9"); /* ←表示される月 */ } else if(Month==11){ document.write("8"); /* ←表示される月 */ } else if(Month==10){ document.write("7"); /* ←表示される月 */ } else if(Month==9){ document.write("6"); /* ←表示される月 */ } else if(Month==8){ document.write("5"); /* ←表示される月 */ } else if(Month==7){ document.write("4"); /* ←表示される月 */ } else if(Month==6){ document.write("3"); /* ←表示される月 */ } else if(Month==5){ document.write("2"); /* ←表示される月 */ } else if(Month==4){ document.write("1"); /* ←表示される月 */ } else if(Month==3){ document.write("0"); /* ←表示される月 */ } else if(Month==2){ document.write("11"); /* ←表示される月 */ } else if(Month<=1){ document.write("10"); /* ←表示される月 */ } document.write("ヶ月と",Day,"日です"); /* ←表示される日と文字列 */ //--> </script> <!-- $$$ ここまでをBODYタグ内の表示させたい場所に入れます $$$ --> </body> </html> もっと、綺麗にコンパクトに出来ますが、それ以前にこれでku_fullさんが求めているような表示をされるかですね。 PC内のシステムの年月日を色々と変えて、動作チェックしてみて下さい。
補足
できました!!ありがとうございます。 もっと綺麗ににコンパクトにするとどうなるのでしょうか??とても気になります。ぜひ教えてください。
- sisya
- ベストアンサー率39% (97/244)
<script language="JavaScript"><!-- function mySet(){ myNow = new Date(); myBirth = new Date(2003, (3-1), 1); myMsec = myNow.getTime()-myBirth.getTime(); myDay = Math.floor(myMsec / (1000*60*60*24)); document.myForm.myFormMes.value = "生まれてから" + (myDay+1) + "日目になります"; } // --></script> で、良いのではないでしょうか?
補足
</title>の次に入れれば良いんですよね?ソースをコピペしてプレビューで確認しましたが、何も表示されません…
- n_kaname
- ベストアンサー率22% (694/3099)
こちらはどうですか。 ちょっとは参考になるかな?
補足
ありがとうございます。教えていただいたサイトを覗いてみました。 確かに私の希望するものはあるのですが、生まれた年月日を入力して計算するものでした。私が希望しているものは常にページの片隅に「○歳△ヶ月と×日になりました」と表示しておけるものなんです。 たぶん、教えていただいたサイトに載っているものをいじればできるとは思いますが、そこまでの知識は持っていないんです…。
お礼
お礼が遅くなってすみません… 指定されたところを直すと希望どおり正常に作動しました! ありがとうございました。