プロが教えるわが家の防犯対策術!

今は「生後○日になりました」というカウントアップのJavaScriptを使用しています。1歳の誕生日を迎たので「○歳△ヶ月と×日になりました」というものに変えたいと思っています。

いくつかのJavaScriptのサイトを探してみましたが、今使用しているカウントアップは見つかりますが、今回変えたいと思っているものが見当たりません。

「○歳△ヶ月と×日になりました」というJavaScriptのソースを教えてください。

子供は2003年3月1日生まれです。よろしくお願いいたします。

A 回答 (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+"日";

こちらの記述に置き換えて下さい。
参考になれば…
    • good
    • 0
この回答へのお礼

お礼が遅くなってすみません…

指定されたところを直すと希望どおり正常に作動しました!

ありがとうございました。

お礼日時:2004/03/15 21:11

日齢の計算に少々難しいところがあるので、これが正確な値を示せているかどうかについての検証がまだ不十分なところがあるとは思いますが、とりあえず以下のようなソースではいかがでしょうか。



<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>

見当違い・不具合がありましたら、ごめんなさい。
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

お礼日時:2004/03/13 00:38

なんか、面白そうなので、私の方からも一つ・・。



但し、全く自信なし。
う~ん・・なんか違う気がするなー。

<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内のシステムの年月日を色々と変えて、動作チェックしてみて下さい。

この回答への補足

できました!!ありがとうございます。

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

補足日時:2004/03/13 00:36
    • good
    • 0

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

補足日時:2004/03/12 22:33
    • good
    • 0

こちらはどうですか。


ちょっとは参考になるかな?

参考URL:http://www.red.oit-net.jp/tatsuya/java/birthda2. …

この回答への補足

ありがとうございます。教えていただいたサイトを覗いてみました。

確かに私の希望するものはあるのですが、生まれた年月日を入力して計算するものでした。私が希望しているものは常にページの片隅に「○歳△ヶ月と×日になりました」と表示しておけるものなんです。

たぶん、教えていただいたサイトに載っているものをいじればできるとは思いますが、そこまでの知識は持っていないんです…。

補足日時:2004/03/12 17:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!