JavaScriptで現在の日付を取得するにはどうすればよいですか?


2308

JavaScriptで現在の日付を取得するにはどうすればよいですか?


383
var currentTime = new Date();
Hendrik、

11
Dateオブジェクトのドキュメントを参照してください。例があります。
クエンティン


24
new Date()現在の日付ではなく、現在の時刻を返します。時間コンポーネントを持たない別の日付(つまり、午前0時)と比較する場合は、区別が重要です。
Steve Bennett

11
momentJsを使用してください。このlibは開発者にとってゴールドです。
RBoschini 2015

回答:


2717

現在の日付と時刻を含むnew Date()新しいDateオブジェクトを生成するために使用します。

var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();

today = mm + '/' + dd + '/' + yyyy;
document.write(today);

これにより、今日の日付がmm / dd / yyyyの形式で表示されます。

単にtoday = mm +'/'+ dd +'/'+ yyyy;あなたが望むどんなフォーマットにでも変えてください。


7
コードをありがとう..しかし、それでもまだ取得できない場合、行if(dd <10){dd = '0' + dd} ...なぜ<10ですか?コードから理解できることは、その日の文字が2未満の場合は、その日の前に0を追加するだけです。
imin

20
@imin:未満2つの文字手段10の下で(1〜9)1つの文字...とすべてが1つの文字が、あるので、我々は持ってますので0102、...、09
ZFM

11
@MounaCheikhna-どうすれば999年になるのでしょうか。
nnnnnn 2014

21
北米にいない場合は、月と日付を入れ替えてください。
マークミカレフ2014年

3
新しいDate.prototype.toLocaleDateString()方法は、より柔軟なソリューションです。これはECMAScript 5.1以降のJavaScriptの一部であり、常緑樹のブラウザーによって十分にサポートされています。MDN:toLocaleDateString()
アダムブラウン

443

var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);

FirefoxやSafariがダッシュ付きの日付を認識しないため、などreplaceutc変数を再利用する場合は、このオプションを使用しますnew Date(utc)


6
私はそうは思いません:)かなり簡単なようです!
Varun Natraaj 2014

6
toJSON()はutc datetimeとして返されます
Andy N

1
JSON日時を返します。toUTCString()utc datetimeとして返されます。
Varun Natraaj 2014

25
TimezoneOffsetは考慮されません。テストの時、私は「今」を求めていて、「昨日」を得ました。stackoverflow.com/questions/13646446/...
mickmackusa

7
完璧です。これは私がここで見ているこれを行う最もクリーンな方法です。「今日ではなく」のMomentJSでうまく機能しますmoment( new Date().toJSON().slice(0, 10) )
Kyle Hotchkiss 14

234

更新しました!、 下へスクロール

エンドユーザーにかなりシンプルなものが欲しいなら... Also, fixed a small suffix issue in the first version below. Now properly returns suffix.

var objToday = new Date(),
	weekday = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'),
	dayOfWeek = weekday[objToday.getDay()],
	domEnder = function() { var a = objToday; if (/1/.test(parseInt((a + "").charAt(0)))) return "th"; a = parseInt((a + "").charAt(1)); return 1 == a ? "st" : 2 == a ? "nd" : 3 == a ? "rd" : "th" }(),
	dayOfMonth = today + ( objToday.getDate() < 10) ? '0' + objToday.getDate() + domEnder : objToday.getDate() + domEnder,
	months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
	curMonth = months[objToday.getMonth()],
	curYear = objToday.getFullYear(),
	curHour = objToday.getHours() > 12 ? objToday.getHours() - 12 : (objToday.getHours() < 10 ? "0" + objToday.getHours() : objToday.getHours()),
	curMinute = objToday.getMinutes() < 10 ? "0" + objToday.getMinutes() : objToday.getMinutes(),
	curSeconds = objToday.getSeconds() < 10 ? "0" + objToday.getSeconds() : objToday.getSeconds(),
	curMeridiem = objToday.getHours() > 12 ? "PM" : "AM";
var today = curHour + ":" + curMinute + "." + curSeconds + curMeridiem + " " + dayOfWeek + " " + dayOfMonth + " of " + curMonth + ", " + curYear;

document.getElementsByTagName('h1')[0].textContent = today;
<h1></h1>

UBBER UPDATE多くの先延ばしの後で、私はついにGitHubbedし、これを私が自分のために使用してきた最終的なソリューションで更新しました。甘くするためにぎりぎりまで編集されています!古いjsFiddleをお探しの場合は、こちらをご覧ください

この更新は2つのフレーバーで提供されますが、それでも比較的小さいですが、上記の私の元の回答ほど小さくはありません。極端に小さくしたい場合は、それに合わせてください。
また、注:これは、moment.jsよりも膨らみが少ないです。imo.jsはいいですが、imoは世俗的なメソッドが多すぎるため、言語のようにモーメントを学習する必要があります。ここの鉱山は、PHPと同じ一般的な形式であるdateを使用しています

クイックリンク

フレーバー1new Date().format(String) 私の個人的なお気に入り。私はタブーを知っていますが、日付オブジェクトでうまく機能します。日付オブジェクトに必要なその他のModに注意してください。

//  use as simple as
new Date().format('m-d-Y h:i:s');   //  07-06-2016 06:38:34

フレーバー2dateFormat(Date, String) より伝統的なオールインワン方式。以前のすべての機能を備えていますが、Dateパラメータを持つメソッドを介して呼び出されます。

//  use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s');  //  07-06-2016 06:38:34

ボーナスフレーバー(jQueryが必要)$.date(Date, String) これには、単純なformatオプションだけではありません。これは、ベースのDateオブジェクトを拡張し、などのメソッドを含みますaddDays。詳細については、Gitを参照してください。

このmodでは、フォーマット文字はPHPに触発されています:date。完全なリストについては、私のREADMEを参照してください

このmodには、事前に作成されたフォーマットのはるかに長いリストもあります。既成のフォーマットを使用するには、キー名を入力するだけです。dateFormat(new Date(), 'pretty-a');

  • 「複合」
    • 'commonLogFormat' == 'd / M / Y:G:i:s'
    • 'exif' == 'Y:m:d G:i:s'
    • 'isoYearWeek' == 'Y \\ WW'
    • 'isoYearWeek2' == 'Y-\\ WW'
    • 'isoYearWeekDay' == 'Y \\ WWj'
    • 'isoYearWeekDay2' == 'Y-\\ WW-j'
    • 'mySQL' == 'Ymd h:i:s'
    • 'postgreSQL' == 'Yz'
    • 'postgreSQL2' == 'Yz'
    • 'soap' == 'Ymd \\ TH:i:su'
    • 'soap2' == 'Ymd \\ TH:i:s.uP'
    • 'unixTimestamp' == '@U'
    • 'xmlrpc' == 'Ymd \\ TG:i:s'
    • 'xmlrpcCompact' == 'Ymd \\ tGis'
    • 'wddx' == 'Ynj \\ TG:i:s'
  • 「定数」
    • 'AMERICAN' == 'F j Y'
    • 'AMERICANSHORT' == 'm / d / Y'
    • 'AMERICANSHORTWTIME' == 'm / d / Y h:i:sA'
    • 'ATOM' == 'Ymd \\ TH:i:sP'
    • 'COOKIE' == 'l dMY H:i:s T'
    • 'ヨーロッパ' == 'j FY'
    • 「ヨーロッパショート」==「dmY」
    • 'EUROPEANSHORTWTIME' == 'dmY H:i:s'
    • 'ISO8601' == 'Ymd \\ TH:i:sO'
    • 「リーガル」==「j年度」
    • 'RFC822' == 'D d M y H:i:s O'
    • 'RFC850' == 'l dMy H:i:s T'
    • 'RFC1036' == 'D d M y H:i:s O'
    • 'RFC1123' == 'D d MYH:i:s O'
    • 'RFC2822' == 'D d MYH:i:s O'
    • 'RFC3339' == 'Ymd \\ TH:i:sP'
    • 'RSS' == 'D d MYH:i:s O'
    • 'W3C' == 'Ymd \\ TH:i:sP'
  • '可愛い'
    • 'pretty-a' == 'g:i.sA l jS \\ o \\ f FY'
    • 'pretty-b' == 'g:iA l jS \\ o \\ f FY'
    • 'pretty-c' == 'n / d / Y g:iA'
    • 'pretty-d' == 'n / d / Y'
    • 'pretty-e' == 'F jS-g:ia'
    • 'pretty-f' == 'g:iA'

お気づきのように、double \を使用して文字をエスケープできます。



14
@KamranAhmedほぼ2年後、40票以上の投票があったので、その努力は価値があったと思います。笑。私はそれ以来、このクラスを個人的に大幅に拡張しましたが、ほとんどの人が私が推奨する他のjs dateプラグインを使用するだろうと思っていたのでアップロードしていませんが、もっと「公開」してここに追加する必要があると思います。
SpYk3HH 14

14
moment.jsは、最近使用するものです
クリスチャンスチュワート

1
上にタイプミスがあり(それを見つけるのにしばらく時間がかかりました)、行で変数「today」を使用しています: "dayOfMonth = today +"
user1435707

"today +(objToday.getDate()<10)? '0' + objToday.getDate()+ domEnder:objToday.getDate()+ domEnder"-JSは愚かな言語です。
Alex S

211

最短。

「2018-08-03」のようなフォーマットを取得するには:

let today = new Date().toISOString().slice(0, 10)

console.log(today)

「8/3/2018」のようなフォーマットを取得するには:

let today = new Date().toLocaleDateString()

console.log(today)

また、ロケールなどを引数として渡すこともできますtoLocaleDateString("sr")


3
タイムゾーンのシフトのため、これはまだ失敗します。
LStarky 2018年

7
なぜ、これが受け入れられた答えではない、最も単純で用途は組み込み関数
lifesoordinary

171

時刻情報のない日付だけが必要な場合は、次を使用します。

var today = new Date();
    today.setHours(0, 0, 0, 0);

document.write(today);


40
これが実際に質問に答える唯一の答えのようです。他の誰もが日付を文字列としてフォーマットする方法について答えます。
Inrego

1
同意する。実際、私はこれと同じような答えを書きたかったのですが、小さなウィンドウがポップアップして、すべての答えを読み終えたかどうかを尋ねてきました。上位の回答しか読んでいないので、正解があるかどうかを確認することにしました。
Lajos Arpad

これはUTCを使用して時間を設定しますが、すべてのユースケースで機能するとは限りません。
マッケイ

103

これを試して:

var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")

結果は次のようになります

15/2/2012

67

日付のフォーマットをより細かく制御したい場合は、momentjsをチェックすることをお勧めします。素晴らしいライブラリ-わずか5KB。 http://momentjs.com/


7
チャームのようなローカリゼーションをサポートします。
Risadinha 2013

最近はdate-fnsを使用しています。日付を不変(モーメントが日付を変更する)として扱い、高速でモジュール式です(必要なものをインポートするだけです)。
Freewalker 2017

2
このmomentjsを投稿してから6年後、かなりの重みがかかってきました。代わりにgithub.com/iamkun/dayjsを確認してください。「ダイエットのmomentjs」と説明しました。同じシンプルなAPI。
benjamin.keen

55

moment.jsを使用できます:http ://momentjs.com/

var m = moment().format("DD/MM/YYYY");

document.write(m);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>


30
現在の日付を取得するだけでは、瞬間は過剰です。
Dan Dascalescu 2014年

またはmoment().format("L")、現在のロケールを尊重します。
ダンク

@DanDascalescu実際、DateTimeのJavascriptベースの仕様はこれほど悪いものです。
トッド

プロジェクトにmomentjsがすでにインポートされている場合、これが最もクリーンでシンプルな答えです。
Adil H. Raza、

52

var d = (new Date()).toString().split(' ').splice(1,3).join(' ');

document.write(d)

ステップに分解するには:

  1. (new Date()).toString() 「2013年6月28日金曜日15:30:18 GMT-0700(PDT)」と表示されます。

  2. (new Date()).toString().split(' ') 上記の文字列をスペースごとに分割し、次のように配列を返します:["Fri"、 "Jun"、 "28"、 "2013"、 "15:31:14"、 "GMT-0700"、 "(PDT)" ]

  3. (new Date()).toString().split(' ').splice(1,3).join(' ') 上記の配列から2番目、3番目、4番目の値を取得し、それらをスペースで結合して、文字列「Jun 28 2013」を返します


2
00:00:00の時間が必要で、手動で再構築したくありませんでした。ステップ2で完全にそこに行けます。賞賛!
panhandel 2013

3
あなたはこれを行うことによって、いくつかのバイトを保存することができます:Date().split(' ').splice(1,3).join(' ')
ハイド

47

これは常に機能します:

    var now = new Date();
    var day = ("0" + now.getDate()).slice(-2);
    var month = ("0" + (now.getMonth() + 1)).slice(-2);
    var today = now.getFullYear() + "-" + (month) + "-" + (day);
    
    console.log(today);


45
var date = new Date().toLocaleDateString("en-US");

また、toLocaleDateString2つのパラメータを使用してメソッドを呼び出すことができます。

var date = new Date().toLocaleDateString("en-US", {
    "year": "numeric",
    "month": "numeric"
});

MSDNの記事。MDNでのこのメソッドの詳細。


Chromeで動作します。残念ながら、2016
chris

クールなソリューション。上にする必要があります。new Date().toLocaleDateString("de-de")私のためのトリックを行います。
user3772108

29

よりクリーンでシンプルなバージョン:

new Date().toLocaleString();

結果、ユーザーのロケールによって異なります

2017年2月27日、午前9:15:41


27

YYYY-MM-DD形式で満足している場合は、これで十分です。

new Date().toISOString().split('T')[0]

2018-03-10


長さは常に固定されているため、部分文字列も使用できます。新しいDate()。toISOString()。substring(0、10); 同様に少し速くなるかもしれません。
ミカカルジュネン

23

Dateオブジェクトを拡張するDate.jsライブラリを使用できるため、.today()メソッドを使用できます。


11
日付ピッカーでjquery uiを使用している場合、$。datepicker.formatDate( 'yy / mm / dd'、new Date())を使用できます
Peter Munnings


16

Varunの答えTimezoneOffsetを考慮していません。これができるバージョンです:

var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11

TimezoneOffsetDateコンストラクタはミリ秒、によるので、乗算をとりながら、数分です60000




11

toISOString()唯一、現在のUTC時刻ではなく、ローカル時間を返します。次のyyyy-MM-ddような形式で日付を取得するには、「。toString()」関数を使用して日付を作成する必要があります

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('T')[0]);

日付と時刻をyyyy-MM-ddTHH:mm:ss形式で取得するには

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0]);

日付と時刻をyyyy-MM-dd HH:mm:ss形式で取得するには

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].replace('T',' '));


10

単純なDD/MM/YYYYフォーマットが必要な場合は、この単純な解決策を考え出しましたが、欠落しているゼロのプレフィックスは付いていません。

var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );



8

最新の編集:2019年8 月23 日date-fnsライブラリは、 moment.jsしかしWAY小さなフットプリントを持っています。プロジェクトに含める関数を簡単に選択できるため、ライブラリ全体をコンパイルして今日の日付をフォーマットする必要はありません。最小限のサードパーティ製libがプロジェクトの選択肢にならない場合は、サミュエルメドウズが承認したソリューションを推奨します。

少数の人々を助けたので、以下の履歴を保存します。しかし、この投稿のほとんどの解決策と同様に、記録としてはかなりハックで警告なしに壊れる可能性があります

編集2/7/2017 1行のJSソリューション:

tl; dr

var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];

edge、ff latest、&chrome todaysDate = "2/7/2017"
はIE10 +で「機能する」*

説明

IE10とIE Edgeの動作が少し異なることがわかりました。とnew Date(Date.now()).toLocaleString()を入力として、

IE10は次を返します:

"Tuesday, February 07, 2017 2:58:25 PM"

大きなlong関数とFTFYを書くことができました。しかし、あなたは本当にこのためにmoment.jsを使うべきです。私のスクリプトは単にこれを整理して、拡張された従来の米国表記法を提供します。> todaysDate = "March 06, 2017"

IE EDGEは次を返します:

"‎2‎/‎7‎/‎2017‎ ‎2‎:‎59‎:‎27‎ ‎PM"

もちろん、そんなに簡単なことはありません。Edgeの日付文字列には、表示されている各文字の間に非表示の「•」文字があります。したがって、最初の文字が数字であるかどうかだけでなく、最初の3文字もチェックすることになります。これは、日付範囲全体の任意の1文字が、ある時点でドットまたはスラッシュになることが判明したためです。だから、物事をシンプルに保つために、ただ.slice()、最初の3文字(将来のに対する小さなバッファー、数値を確認します。これらの非表示のドットがコード内に残る可能性があることに注意してください。この文字列を自分のビューに出力するだけの計画よりも大きな計画がある場合は、それについて掘り下げます。

∴更新されたワンライナー:

var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];

それは読むのが嫌です。どうですか:

var dateString = new Date(Date.now()).toLocaleString();
var todaysDate = dateString.slice(0,3).match(/[0-9]/i) ? dateString.split(' ')[0].split(',')[0] : dateString.split(' ')[1] + " " + dateString.split(' ')[2] + " " + dateString.split(' ')[3];

元の回答

私はあなたのためにワンライナーを持っています:

new Date(Date.now()).toLocaleString().split(', ')[0];

そして[1]あなたに一日の時間を与えます。


7

これを使えます

<script>
function my_curr_date() {      
    var currentDate = new Date()
    var day = currentDate.getDate();
    var month = currentDate.getMonth() + 1;
    var year = currentDate.getFullYear();
    var my_date = month+"-"+day+"-"+year;
    document.getElementById("dateField").value=my_date;    
}
</script>

HTMLは

<body onload='return my_curr_date();'>
    <input type='text' name='dateField' id='dateField' value='' />
</body>

6

jQueryを使用している場合。これを試してみてください:

$.datepicker.formatDate('dd/mm/yy', new Date());

日付をフォーマットするための規則は次のとおりです

  • d-月の日(先行ゼロなし)
  • dd-日(2桁)
  • o-年間通算日(先行ゼロなし)
  • oo-年間通算日(3桁)
  • D-短い曜日名
  • DD-長い曜日名
  • m-月(先行ゼロなし)
  • mm-月(2桁)
  • M-短い月名
  • MM-月の名前
  • y-年(2桁)
  • yy-年(4桁)

これがjQuery datepickerのリファレンスです


5

(現在のタイムゾーンを考慮しながら、ISO yyyy-mm-dd形式を利用して)それを引き出すための最も簡単な方法は次のとおりです。

let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"

通常、これはかなり多目的に互換性のある日付形式であり、必要に応じて純粋な日付値に変換できます。

Date.parse(d); // 1582044297000

4

これをチェックアウトできます

var today = new Date();
today = parseInt(today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear()+"\nTime : "+today.getHours()+":"+today.getMinutes()+":"+today.getSeconds();
document.write(today);

また、Date()コンストラクターのドキュメントを参照してください。 リンク


4

これの大きな問題は何ですか。これを行う最もクリーンな方法は、

var currentDate=new Date().toLocaleString().slice(0,10);


1
このように3/4/2018, 、間違いを返すので、使用しnew Date().toJSON().slice(0,10)た方がよいでしょう。
DevonDahon 2018年

これは、単にコンソールのログの表示やUIの情報や表示の日付を取得するのに最適です。なしで私にとってより良い.slice(0,10)
ポールカールトン

4

これはあなたを助けるかもしれません

var date = new Date();
console.log(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());

現在の日付をdd / MM / yyyy形式で出力します



3

これは古い質問だと思いますが、最も簡単な方法は次のとおりです。

var date = new Date();
var TimeStamp = date.toLocaleString();

function CurrentTime(){
  alert(TimeStamp);
}

これにより、現在の時刻が取得され、場所に基づいて文字列に渡されるので、CurrentTime関数を呼び出して時刻を表示できます。これは、私にとって、何かのタイムスタンプを取得する最も効果的な方法です。


これはデータと時間を返します。「2018-4-6 16:20:22」、そして問題は日付のみを取得する方法です。
Vlad Bezden
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.