とほほのJavaScript入門(日付)

とほほのWWW入門 > とほほのJavaScript入門 > 日付
1998年12月20日版

日付(Date)

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");
以下の形式も使用可能だが、NN2.0では月を0〜11で記述しなくてはならない。また、年が2桁の形式は、1900年代と2000年代を判別できないケースがあるので、使用しない方が無難。
    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();
Internet Explorer 4.0以降や、Netscape Navigator 4.06以降では、ミリ秒の指定も可能になった。
    dd = new Date(1999, 11, 31, 23, 59, 59, 999);

document.lastModified を整形しようと以下のようなことを試みるが、IE4.0で時刻が9時間ずれる。NN2.0でlastModifiedの形式が異なる。2000年を1900年と間違えてしまうなどのいろいろな問題があり、自分のブラウザではうまく動いているように見えても、他のバージョンのブラウザではうまくいかないケースが多い。

    dd = new Date(document.lastModified);

date.getFullYear() (e4/N45)
date.setFullYear(year) (e4/N45)
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/N45)
date.setMilliseconds(msec) (e4/N45)
現地時刻での年/月/日/曜日/時/分/秒/ミリ秒を取得(設定)する。曜日は日曜日(0)〜土曜日(6)までの値。月は0〜11(1月が0)なので注意が必要。

getYear()は動作が複雑。1900年代は常に1900年からの差分(1999年の場合は99)を示すが、2000年代はブラウザのバージョンによって動作が異なる。IE3.0, NN2.0, NN4.06, NN4.5は、1900年からの差分(2000年の場合は100)を返すが、IE4.0, IE5.0, NN3.0, NN4.0は西暦そのもの(2000年の場合は2000)を返す。

setYear(year)は、JavaScript1.1までは1900年からの差分を指定するものだったが、JavaScript1.2からは、yearが0〜99の場合は1900年からの差分、100以上の場合は西暦と判断されるようになった。

getFullYear()は常に1998や2001などの西暦を返すので便利だが、NN4.0などちょっと古いブラウザでは使用できない。年・月・日を得るには次のようにするとよい。

    dd = new Date();
    year = dd.getYear();
    if (year < 2000) year += 1900;
    mon = dd.getMonth() + 1;
    date = dd.getDate();
setMonth()にはバグがある。うるう年の2月以外の月の30または31日のDateオブジェクトに対して、setMonth(1)を実行すると、getDay()で取得する曜日が1日ずれてしまうらしい。(Win版IE5.0/NN4.0で確認)

date.getUTCFullYear() (e4/N45)
date.setUTCFullYear(year) (e4/N45)
date.getUTCYear() (e4/N45)
date.setUTCYear(year) (e4/N45)
date.getUTCMonth() (e4/N45)
date.setUTCMonth(month) (e4/N45)
date.getUTCDate() (e4/N45)
date.setUTCDate(date) (e4/N45)
date.getUTCDay() (e4/N45)
date.getUTCHours() (e4/N45)
date.setUTCHours(hour) (e4/N45)
date.getUTCMinutes() (e4/N45)
date.setUTCMinutes(min) (e4/N45)
date.getUTCSeconds() (e4/N45)
date.setUTCSeconds(sec) (e4/N45)
date.getUTCMiliSeconds() (e4/N45)
date.setUTCMiliSeconds(msec) (e4/N45)
世界標準時での年、月、日、曜日、時、分、秒、ミリ秒を取得(設定)する。

date.getTime() (e3/N2)
date.setTime(time) (e3/N2)
1970年1月1日0時0分0秒(GMT)からの秒数(ミリ秒単位)を取得(設定)する。

date.getTimezoneOffset() (e3/N2)
時間帯情報(分単位)を得る。日本の場合は -540(-9時間)となる。

date.toString() (e3/N2)
date.toLocaleString() (e3/N2)
date.toGMTString() (e3/N2)
date.toUTCString() (e4/N45)
時刻を表す文字列に変換する。toString()/toLocaleString()は現地時刻、toGMTString()/toUTCString()は世界標準時刻(UTC)で表示する。ブラウザやバージョンによって表示形式が様々なので注意が必要。

Date.UTC(year,mon,day,hour,min.sec) (e3/N2)
指定した時刻の、1970年1月1日0時0分0秒(GMT)からの秒数(ミリ秒単位)を得る。時間帯はGMT、monは0〜11で指定することに注意。NNのJavaScript1.3では引数でミリ秒の指定も可能になった。

Date.parse(string) (e3/N2)
stringを解釈して、1970年1月1日0時0分0秒(GMT)からの秒数(ミリ秒単位)を得る。stringの形式は dd = new Date(string) の時と同じ。

ただし、C言語の mktime() 関数に相当する、秒数(ミリ秒単位)を日付の形式に逆変換する関数がサポートされていないため、逆変換したい時は自分でうるう年などを考慮したロジックを組む必要がある。


Copyright (C) 1996-1999 とほほ
http://wakusei.cplaza.ne.jp/twn/wwwjsdat.htm