日付(Date)

[up] [prev] [next]

■ 一覧

Date(), getDate(), getDay(), getFullYear(), getHours(), getMilliseconds(), getMinutes(), getMonth(), getSeconds(), getTime(), getTimezoneOffset(), getUTCDate(), getUTCDay(), getUTCFullYear(), getUTCHours(), getUTCMilliseconds(), getUTCMinutes(), getUTCMonth(), getUTCSeconds(), getUTCYear(), getYear(), parse(), setDate(), setFullYear(), setHours(), setMilliseconds(), setMinutes(), setMonth(), setSeconds(), setTime(), setUTCDate(), setUTCFullYear(), setUTCHours(), setUTCMilliseconds(), setUTCMinutes(), setUTCMonth(), setUTCSeconds(), setUTCYear(), setYear(), toGMTString(), toLocaleString(), toString(), toUTCString(), toVarDate(), Date.UTC()

日付オブジェクト

date = new Date(...) (e3/N2)

指定した時刻を表す日付オブジェクトを生成します。月は 0〜11 の範囲で指定してください。

dd = new Date(1999, 11, 31);
dd = new Date(1999, 11, 31, 23, 59, 59);
dd = new Date("Dec 31, 1999 23:59:59");
dd = new Date("December 31, 1999 23:59:59");

以下の形式も使用可能ですが、Netscape Navigator 2.0 では月を 0〜11 で記述します。

dd = new Date("1999/12/31 23:59:59");
dd = new Date("12/31/1999 23:59:59");
dd = new Date("99/12/31 23:59:59");
dd = new Date("12/31/99 23:59:59");

時刻を省略した場合は現在の時刻となります。

dd = new Date();

JavaScript 1.3 では、ミリ秒の指定も可能になりました。

dd = new Date(1999, 11, 31, 23, 59, 59, 999);

日付情報の取得と設定

date.getFullYear() (e4/N406)
date.setFullYear(year) (e4/N406)
date.getYear() (e3/N2)
date.setYear(year) (e3/N2)
date.getMonth() (e3/N2)
date.setMonth(mon) (e3/N2)
date.getDate() (e3/N2)
date.setDate(date) (e3/N2)
date.getDay() (e3/N2)
date.getHours() (e3/N2)
date.setHours(hour) (e3/N2)
date.getMinutes() (e3/N2)
date.setMinutes(min) (e3/N2)
date.getSeconds() (e3/N2)
date.setSeconds(sec) (e3/N2)
date.getMilliseconds() (e4/N406)
date.setMilliseconds(msec) (e4/N406)

現地時刻での年、月、日、曜日、時、分、秒、ミリ秒を取得(設定)します。曜日は日曜日(0)〜土曜日(6)までの値。月は0〜11(1月が0)で指定します。

getFullYear() や setFullYear() は常に 1998 や 2001 などの西暦を扱いますが、ちょっと古いブラウザでサポートされていません。

getYear() は 1999年までは 1900年からの差分を返します。2000年以降はブラウザにより動作がまちまちです。NN3.0 や IE3.0 では1900年からの差分を返します。NN4.0 や、それを真似た IE4.0 で4桁の西暦を返すように変更されましたが、評判が悪かったので、NN4.06 では仕様を元に戻しました。IE は変更したままです。(ころころと仕様変更してほしくないものです)

ブラウザ動作
NN2.*1900年からの差分
NN3.0〜NN4.054桁の西暦
NN4.06〜1900年からの差分
IE3.*1900年からの差分
IE4.*〜4桁の西暦

YYYY/MM/DD 形式の時刻を表示するおススメの記述は以下のようになります。

dd = new Date();
yy = dd.getYear();
mm = dd.getMonth() + 1;
dd = dd.getDate();
if (yy < 2000) { yy += 1900; }
if (mm < 10) { mm = "0" + mm; }
if (dd < 10) { dd = "0" + dd; }
document.write(yy + "/" + mm + "/" + dd);

ブラウザによるgetYear()メソッドの違いを解決している

西暦
yr=(now.getYear()<1000)? now.getYear()+1900:now.getYear();
 yr=A? B:C;Aが真ならばB、真でなければC
(now.getYear()<1000)?は西暦1000年以内なら、というのは 西暦1900年代までは下二桁、西暦2000年以降は三桁と1000年以内を返すブラウザを選別している。
そして、条件演算子で年号が四桁未満の場合は1900を加算した値を、そうでなければそのものの値を取得します。
now=new Date();
yr=(now.getYear()<1000)? now.getYear()+1900:now.getYear();/*ブラウザによるgetYear()メソッドの違いを解決している*/
mo=now.getMonth()+1;
dy=now.getDate();
hr=now.getHours();
mt=now.getMinutes();
sd=now.getSeconds();
if (yr<10) { yr="0"+yr; }
if (mo<10) { mo="0"+mo; }
if (dy<10) { dy="0"+dy; }
if (hr<10) { hr="0"+hr; }
if (mt<10) { mt="0"+mt; }
if (sd<10) { sd="0"+sd; }
document.write('西暦の結果 現在、'+yr+'年'+mo+'月'+dy+'日 '+hr+'時'+mt+'分'+sd+'秒です。');


和暦
yr=(now.getYear()<1000)? now.getYear()-88:now.getYear()-1988;  yr=A? B:C;Aが真ならばB、真でなければC
(now.getYear()<1000)?は西暦1000年以内なら、というのは 西暦1900年代までは下二桁、西暦2000年以降は三桁と1000年以内を返すブラウザを選別している。
そして、条件演算子で年号が四桁未満の場合は1900を加算した値を、そうでなければそのものの値を取得します。
和暦に変換するには、更に1988または88を差引いた値となります。
now=new Date();
yr=(now.getYear()<1000)? now.getYear()-88:now.getYear()-1988;/*ブラウザによるgetYear()メソッドの違いを解決している*/
mo=now.getMonth()+1;
dy=now.getDate();
hr=now.getHours();
mt=now.getMinutes();
sd=now.getSeconds();
if (yr<10) { yr="0"+yr; }
if (mo<10) { mo="0"+mo; }
if (dy<10) { dy="0"+dy; }
if (hr<10) { hr="0"+hr; }
if (mt<10) { mt="0"+mt; }
if (sd<10) { sd="0"+sd; }
document.write('和暦の結果 現在、'+yr+'年'+mo+'月'+dy+'日 '+hr+'時'+mt+'分'+sd+'秒です。');


■年号と月は単純に代入する訳には行きません。

 
(参考)http://www.marguerite.jp/Nihongo/WWW/JavaScript/DATE.html#SEC_5
年号の場合、ブラウザによりgetYear()メソッドには以下のような違いがあります。
この事を考えると、西暦年号を得るには以下のようにする必要があります。
  • 西暦年号を得るソース
    dd = new Date();
    yy = dd.getYear();
    if (yy < 2000) { yy += 1900; } #1900を差引いた値を返すブラウザに1900を足す
    
    
    
    和暦に変換は、西暦に1988を差引いた値となります。
    以下のようにして和暦に換算します。
  • 和暦に変換するソース
    dd = new Date();
    yy = dd.getYear();
    if (yy < 2000) { yy += 1900; } #1900を差引いた値を返すブラウザに1900を足す
    yy=yy-1988;#西暦から1988を差引いた値にすると平成の号
    	
    

  • date.getUTCFullYear() (e4/N406)
    date.setUTCFullYear(year) (e4/N406)
    date.getUTCYear() (e4/N406)
    date.setUTCYear(year) (e4/N406)
    date.getUTCMonth() (e4/N406)
    date.setUTCMonth(month) (e4/N406)
    date.getUTCDate() (e4/N406)
    date.setUTCDate(date) (e4/N406)
    date.getUTCDay() (e4/N406)
    date.getUTCHours() (e4/N406)
    date.setUTCHours(hour) (e4/N406)
    date.getUTCMinutes() (e4/N406)
    date.setUTCMinutes(min) (e4/N406)
    date.getUTCSeconds() (e4/N406)
    date.setUTCSeconds(sec) (e4/N406)
    date.getUTCMilliseconds() (e4/N406)
    date.setUTCMilliseconds(msec) (e4/N406)

    世界標準時(UTC)での年、月、日、曜日、時、分、秒、ミリ秒を取得(設定)します。

    date.getTimezoneOffset() (e3/N2)

    時間帯情報(分単位)を取得します。日本の場合は -540(-9時間)となります。

    文字列への変換

    date.toString() (e3/N2)
    date.toLocaleString() (e3/N2)
    date.toGMTString() (e3/N2)
    date.toUTCString() (e4/N406)
    date.toVarDate() (e4)

    時刻を表す文字列に変換します。toString()、toLocaleString()、toVarDate() は現地時刻、toGMTString() や toUTCString() は世界標準時刻(UTC)に変換します。

    dd = new Date();
    document.write(dd.toLocaleString());
    

    文字列のフォーマットはブラウザやバージョンによってさまざまなので、注意が必要です。例えば、toLocaleString() だけでも次のようなフォーマットなどがあります。好みのフォーマットに変換するには、getFullYear() の個所で説明した方法などを用いてください。

    12/31/2000 23:59:59                 // IE4/IE5
    12/31/00 23:59:59                   // IE3
    Sunday, December 31, 2000 23:59:59  // N4.7(Win)
    Dec 31 23:59:59 2000                // N4.7(Mac)
    Sun 31 Dec 2000 11:59:59 PM JST     // N4.7(UNIX)
    12/31/00 23:59:59                   // N2/N3/N4.05(Win)
    2000/12/31 23:59:59:GMT+09:00       // HotJava3.0
    

    数値への変換

    date.getTime() (e3/N2)
    date.setTime(time) (e3/N2)

    1970年1月1日0時0分0秒(UTC)からの秒数(ミリ秒単位)を取得(設定)します。下記の例では1週間後の日付を得ます。

    dd = new Date();
    dd.setTime(dd.getTime() + (7 * 24 * 3600 * 1000));
    
    Date.UTC(year, mon, day, hour, min, sec) (e3/N2)

    指定した時刻の、1970年1月1日0時0分0秒(UTC)からの秒数(ミリ秒単位)を得ます。時間帯は世界標準時、mon は0〜11で指定することに注意してください。JavaScript 1.3 では引数でミリ秒の指定も可能になりました。

    Date.parse(string) (e3/N2)

    string を解釈して、1970年1月1日0時0分0秒(UTC)からの秒数(ミリ秒単位)を得ます。string の形式は dd = new Date(string) の時と同じです。


    [up] [prev] [next]
    Copyright (C) 1996-2002 杜甫々
    改訂版初版:2001年5月20日、最終更新:2002年1月7日
    http://www.tohoho-web.com/js/date.htm