前回の記事でnew演算子とDateコンストラクタを使い、利用可能なオブジェクトであるインスタンスを生成する方法について触れました。
一回インスタンスを生成すると、オブジェクトに用意されているメソッドやプロパティが利用できます。Dateオブジェクトの個別のインスタンスは内部に年、月、日、時、分、秒といった日付時刻のデータを持っております。それらの データを処理する目に、色々な日付時刻に関するメソッドが用意されています。
例をあげると、getFullYearメソッドを使用することで、年を西暦4桁の数値に変換できます。
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>日付、時刻を操作する</title> </head> <body> <script> var now,date; now = new Date(); date = now.getFullYear() + "年" + (now.getMonth() + 1) + "月" + now.getDate() + "日"; document.write( date ,"<br>") var days,diff; //来年の元旦を取得している var nextNewYear = new Date(now.getFullYear() +1 , 0, 1); //来年の元旦から現時点までの時間の差 diff = nextNewYear.getTime() - now.getTime(); //来年の元旦から今日までの「日」の差 days = Math.ceil( diff / (24*60*60*1000)); //今年の残日数を出力 document.write("今年の残日数は",days,"日です。") </script> </body> </html> |
日付や時刻を取得するメソッド
Dateオブジェクトには、日付や時刻を操作するメソッドが用意されていいます。下記に日時を取得する主なメソッドを書き留めておきます。
メソッド | メソッドの説明 |
---|---|
getFullYear | 年を4桁の数値で返す |
getMonth | 月を戻す。戻り値は「0」が1月、「1」は2月 「11」は12月です |
getDay | 曜日を示す数値を戻す。「0」は日曜日、 「1」は月曜日、「6」は土曜日 |
getDate | 日を戻す |
getHours | 時間を戻す、24時間形式なので 戻り値は0~23まで |
getMinutes | 分を戻す |
getSeconds | 秒を戻す |
このうち、月を戻すgetMonthメソッドは戻り値を間違えやすいです。月数より1小さい値です。なのでサンプルコードをみると、 (now.getMonth() + 1 )と書いています。
getTimeメソッドで日数の差を計算する
日付や時刻の計算に便利なメソッドが、「1970年1月1日0時0分0秒から経過時間」をミリ秒単位で戻すgetTimeメソッドです。例えば、day1,day2という2つの異なる日時を入れられたDateオブジェっクトがあるとすると、2つの日時の差をミリ単位で計算するには以下のようにします。
1 |
diff = day2.getTime - day1.getTime(); |
ミリ単位の時間の差は計算できましたが、これを日にちの差を求めるにはどうすればいいでしょうか。
単位はミリ秒なので、秒に換算するには1000で割ります。
分に換算するにはそれをさらに60で割り、
時間に換算するにはそれをさらに60で割り、
日数に換算するにはそれをさらに24で割り、
値を「24*60*60*1000」で割れば日数の差が計算できます。
なのですが、日数として使用するには、小数点以下の桁が不要です。小数点以下を切り上げるには、Mathオブジェクトのceilメソッドを使います。Mathオブジェクトは数値計算用のメソッドが多数用意されているオブジェクトです。メソッドは特殊で、インスタンスを生成しなくても使えます。
今年の残日数を計算する
サンプルコードの25,26行目で来年の元旦を示すDateオブジェクトを生成しています。Dateコンストラクタの最初の引数である年には、今日の日付が管理する変数nowに、getFullYearメソッドを実行して、今年を求めてその値に1を加算して来年を設定しています。月は「0」を指定する点に注意です。
29行目で。来年の1月1日と現在時刻との差をミリ秒単位で計算しています。それを「24*60*60*1000」で割り、Math.ceilメソッドで小数点以下を切り上げて日数に変換します。
日付時刻の設定メソッド
Dateオブジェクトに用意されている日付時刻を取得する
メソッドについて書いてきました。一方では、
日付時刻を設定するメソッドもあります。
データを取得するメソッドは「get」で始まり、
データを設定するメソッドは「set」で始まります。
例えば月の値を取得するメソッドは「getMonth」ですが、
月の値を設定するメソッドは「setMonth」です。