• ベストアンサー

○歳△ヶ月と×日を計算してくれるJavaScriptを教えてください。

今は「生後○日になりました」というカウントアップのJavaScriptを使用しています。1歳の誕生日を迎たので「○歳△ヶ月と×日になりました」というものに変えたいと思っています。 いくつかのJavaScriptのサイトを探してみましたが、今使用しているカウントアップは見つかりますが、今回変えたいと思っているものが見当たりません。 「○歳△ヶ月と×日になりました」というJavaScriptのソースを教えてください。 子供は2003年3月1日生まれです。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#199778
noname#199778
回答No.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+"日"; こちらの記述に置き換えて下さい。 参考になれば…

ku_full
質問者

お礼

お礼が遅くなってすみません… 指定されたところを直すと希望どおり正常に作動しました! ありがとうございました。

その他の回答 (4)

noname#199778
noname#199778
回答No.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> 見当違い・不具合がありましたら、ごめんなさい。

ku_full
質問者

お礼

ありがとうございます。 きちんと作動しました!ただ、「△ヶ月」というのが表示されないんです。これもできれば表示したいのです。

  • Joh_Taka
  • ベストアンサー率76% (222/292)
回答No.3

なんか、面白そうなので、私の方からも一つ・・。 但し、全く自信なし。 う~ん・・なんか違う気がするなー。 <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内のシステムの年月日を色々と変えて、動作チェックしてみて下さい。

ku_full
質問者

補足

できました!!ありがとうございます。 もっと綺麗ににコンパクトにするとどうなるのでしょうか??とても気になります。ぜひ教えてください。

  • sisya
  • ベストアンサー率39% (97/245)
回答No.2

<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> で、良いのではないでしょうか?

ku_full
質問者

補足

</title>の次に入れれば良いんですよね?ソースをコピペしてプレビューで確認しましたが、何も表示されません…

  • n_kaname
  • ベストアンサー率22% (694/3099)
回答No.1

こちらはどうですか。 ちょっとは参考になるかな?

参考URL:
http://www.red.oit-net.jp/tatsuya/java/birthda2.htm
ku_full
質問者

補足

ありがとうございます。教えていただいたサイトを覗いてみました。 確かに私の希望するものはあるのですが、生まれた年月日を入力して計算するものでした。私が希望しているものは常にページの片隅に「○歳△ヶ月と×日になりました」と表示しておけるものなんです。 たぶん、教えていただいたサイトに載っているものをいじればできるとは思いますが、そこまでの知識は持っていないんです…。

関連するQ&A

  • カウントダウンとカウントアップについて

    JavaScriptで「○○は生後△△日になりました。あと××日で1歳になります。」というようにカウントダウンとカウントアップを設置したいと思っています。 例えば、2003年2月1日生まれの場合は カウントアップは var xxday = new Date(2003, 2-1, 2); カウントダウンは var xday = new Date(2004, 2-1, 1); でいいのでしょうか??

  • 20歳になる誕生日と選挙権の関係は

    ご存じのように、4月1日生まれの子供は3月31日生まれの子供と同じ学年になります(民法)。 つまり、4月1日が誕生日の子は3月31日に6歳となるように決められています。 ところで、例えば1月1日が誕生日で20歳になる人は前年の12月31日に選挙があったときに、投票権は与えられるのでしょうか。 昔、このことで論争があったような文を読んだ記憶があるのですが、実際はどちらなのでしょうか。 ご存じの方、教えて下さい。

  • 1ヶ月検診を受ける時期は?

    来週で産後4週間になります。 いわゆる赤ちゃんの1ヶ月検診は、誕生日から1ヶ月先、 つまり1日生れなら、翌月の1日以降なのか、 4週間後でいいのかどちらでしょうか?

  • JavaScriptについて

    JavaScriptをオブジェクト指向言語(クラスや継承など)のように記述し、使用することは可能なのでしょうか? JavaScriptをオブジェクト指向的に記述しているソースを見て 感動したので質問してみました。 しょぼい質問で申し訳ないのですが、どなたかご教授ください。 お願い致します。 また、関連するサイトやサンプルソース等がわかりやすく紹介されて いるサイトなどがあれば教えて下さい。

  • 4月2日生まれ

    4月1日生まれの質問がありましたので 思い出したのですが、 日本人の誕生日で一番多いのは、4月2日であると いうデータを何かで見たことがあります。   *4月1日生まれだと教育上不利になるので    1日遅らせて届けを出すのでしょうか? また2位以下は、9月の下旬生まれの人が 多かったように記憶しています。   *クリスマスから正月にかけての    子供ということでしょう この二点についてご存知の方、 また意見のある方、回答お願いします。

  • 誕生日 一ヶ月違い

    「よくタレントの●●と誕生日一緒」とか「●●と誕生日一日違い」は聞きますが 「●●と誕生日一ヶ月違い」は聞いたことありません。 なぜでしょうか? 一ヶ月違いでもなんかすごいと私は思いますが…。

  • javascriptを使用した際のIEのポップアップについて。

    javascriptを使用すると、通常IEの場合ポップアップが表示されてしまうのですが、大手のサイトなどのページでは、ソースを見るとjavascriptが記述されているのに、ポップアップが表示されないのをよく目にします。これには、何かしかけがあるのでしょうか?基本的な質問なのかもしれませんが、よろしくお願いします。

  • javascriptに関して

    オンマウスで画像が大きくなり、そのうえリンクが張れるサンプルのソースを教えてください。 フラッシュなどは使用できずjavascriptで制作しなければなりません。 参考サイトなどもございましたらあわせてご教授下さい。

  • 誕生日について

    11月30日生まれの子供と12月1日生まれの子供だと、どちらがメリットあると思いますか?

  • 犬を飼いますが(3ヶ月の子犬)

    みなさんに教えていただきたいことがあります。 基本的に犬を飼うとき生後2ヶ月で家に来ますよね? 今回トイプードルを飼う事になったのですが10月15日生まれ 家に来るのが年明けの1月7~10日頃。 大体生後3ヶ月弱です。 3ヶ月弱なので散歩デビューもあと少しでできますし私としては嬉しいのですがトイレのしつけやそのほかのしつけも3ヶ月からでも覚えてくれますか? もしよければ早急におしえていただきたいです。

    • ベストアンサー