1. ホーム
  2. ジャバスクリプト

[解決済み】JavaScriptで現在の日付と時刻を取得する

2022-03-23 08:43:57

質問

JavaScriptで現在の日付と時刻を表示するスクリプトがあるのですが DATE がいつも間違っている。以下はそのコードです。

var currentdate = new Date();
var datetime = "Last Sync: " + currentdate.getDay() + "/" + currentdate.getMonth() 
+ "/" + currentdate.getFullYear() + " @ " 
+ currentdate.getHours() + ":" 
+ currentdate.getMinutes() + ":" + currentdate.getSeconds();

を印刷する必要があります。 18/04/2012 15:07:33 と表示され 3/3/2012 15:07:33

解決方法は?

.getMonth() はゼロベースの数値を返すので、正しい月を得るには 1 を加える必要があります。 .getMonth() を返します。 4 であり 5 .

つまり、あなたのコードでは currentdate.getMonth()+1 を使えば、正しい値が出力されます。さらに

  • .getDate() は、その月の日数を返します。 <- これはあなたが欲しいものです。
  • .getDay() は別メソッドで Date オブジェクトは、現在の曜日を表す整数値 (0-6) を返します。 0 == Sunday その他

ということで、コードは以下のようになります。

var currentdate = new Date(); 
var datetime = "Last Sync: " + currentdate.getDate() + "/"
                + (currentdate.getMonth()+1)  + "/" 
                + currentdate.getFullYear() + " @ "  
                + currentdate.getHours() + ":"  
                + currentdate.getMinutes() + ":" 
                + currentdate.getSeconds();


JavaScriptのDateインスタンスはDate.prototypeを継承しています。コンストラクタのプロトタイプオブジェクトを変更することで、JavaScript の Date インスタンスが継承するプロパティとメソッドに影響を与えることができます。

を利用することができます。 Date プロトタイプオブジェクトを使用して、今日の日付と時刻を返す新しいメソッドを作成することができます。これらの新しいメソッドやプロパティは、プロトタイプオブジェクトのすべてのインスタンスに継承されます。 Date このため、この機能を再利用する必要がある場合に特に便利です。

// For todays date;
Date.prototype.today = function () { 
    return ((this.getDate() < 10)?"0":"") + this.getDate() +"/"+(((this.getMonth()+1) < 10)?"0":"") + (this.getMonth()+1) +"/"+ this.getFullYear();
}

// For the time now
Date.prototype.timeNow = function () {
     return ((this.getHours() < 10)?"0":"") + this.getHours() +":"+ ((this.getMinutes() < 10)?"0":"") + this.getMinutes() +":"+ ((this.getSeconds() < 10)?"0":"") + this.getSeconds();
}

あとは、以下のようにすれば、簡単に日付と時刻を取得することができます。

var newDate = new Date();
var datetime = "LastSync: " + newDate.today() + " @ " + newDate.timeNow();

あるいは、インラインでメソッドを呼び出すので、単純に - となる。

var datetime = "LastSync: " + new Date().today() + " @ " + new Date().timeNow();