曜日と月を取得する方法は?


124

私はJavascriptについてよく知らないので、私が見つけた他の質問は、必要な情報を取得するだけでなく、日付の操作に関連しています。

目的

以下の形式で日付を取得したい:

2011年1月27日木曜日17:42:21に印刷

これまでのところ、私は以下を得ました:

var now = new Date();
var h = now.getHours();
var m = now.getMinutes();
var s = now.getSeconds();

h = checkTime(h);
m = checkTime(m);
s = checkTime(s);

var prnDt = "Printed on Thursday, " + now.getDate() + " January " + now.getFullYear() + " at " + h + ":" + m + ":" s;

曜日と月(それらの名前)を取得する方法を知る必要があります。

それを作る簡単な方法はありますか、そして私は単純にnow.getMonth()and を使用して正しい値にインデックスを付ける配列の使用を検討しますnow.getDay()か?

回答:


233

はい、配列が必要です。

var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];

var day = days[ now.getDay() ];
var month = months[ now.getMonth() ];

または、date.jsライブラリを使用できます。


編集:

これらを頻繁に使用する場合はDate.prototype、アクセシビリティのために拡張することをお勧めします。

(function() {
    var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];

    var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];

    Date.prototype.getMonthName = function() {
        return months[ this.getMonth() ];
    };
    Date.prototype.getDayName = function() {
        return days[ this.getDay() ];
    };
})();

var now = new Date();

var day = now.getDayName();
var month = now.getMonthName();

2
@ウィル:どういたしまして。参考までに、これを頻繁に行う場合は、機能をDateオブジェクトに簡単にプロトタイプ化できます。すぐに更新します。
user113716 2011年

3
データをローカライズすれば、1言語のみの配列は必要ありません。selectedLocale = 'en-us'; selectedDate.toLocaleString(selectedLocale、{月: "long"});
Ryan Loggerythm 2016

私は今これを行いましたが、日曜日ではなく月曜日を配列の最初の要素として使用する必要がありました。それでも、うまく機能します。
nrowegt 2016年

4
いいえ、いいえ、いいえ、いいえ。標準のjavascript Dateクラスを使用するだけです。配列や追加のライブラリは必要ありません。私の回答をご覧ください:stackoverflow.com/a/50293232/760777
RWC

51

標準のjavascript Dateクラスを使用します。アレイは必要ありません。追加のライブラリは必要ありません。

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateStringを参照してください

var options = {  weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false };
var prnDt = 'Printed on ' + new Date().toLocaleTimeString('en-us', options);

console.log(prnDt);


@RWCこれはいいですが、残りの日付部分なしで平日のみを取得するにはどうすればよいですか?IEのsaturday代わりに欲しいsaturday, 9th february 2019
Vladimir Nul

4
@Valdimir Nul:var prnDt = 'Printed on' + new Date()。toLocaleDateString( 'en-us'、{weekday: 'long'}); console.log(prnDt);
RWC

間違いなくそれを行うための最良の方法。
ディエゴビクターデジーザス

8

また、日付オブジェクトを拡張してWeekdayを返すようにすることもできます。

Date.prototype.getWeekDay = function() {
    var weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    return weekday[this.getDay()];
}

したがって、date.getWeekDay();のみを呼び出すことができます。


7

@の通りL-Rayがすでに示唆している、あなたがに見ることができますmoment.jsだけでなく、

サンプル

var today = moment();
var result = {
  day: today.format("dddd"),
  month: today.format("MMM")
}

document.write("<pre>" + JSON.stringify(result,0,4) + "</pre>");
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>


5

残念ながら、 Date JavaScriptのオブジェクトは月に関する情報を数値形式でのみ返します。あなたができるより速いことは、月の配列を作成することです(それらは頻繁に変更されることになっているわけではありません!)そして数に基づいて名前を返す関数を作成することです。

このようなもの:

function getMonthNameByMonthNumber(mm) { 
   var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); 

   return months[mm]; 
}

したがって、コードは次のようになります。

var prnDt = "Printed on Thursday, " + now.getDate() + " " + getMonthNameByMonthNumber(now.getMonth) + " "+  now.getFullYear() + " at " + h + ":" + m + ":" s;

5
var GetWeekDays = function (format) {
    var weekDays = {};

    var curDate = new Date();
    for (var i = 0; i < 7; ++i) {
        weekDays[curDate.getDay()] = curDate.toLocaleDateString('ru-RU', {
            weekday: format ? format : 'short'
        });

        curDate.setDate(curDate.getDate() + 1);
    }

    return weekDays;
};

me.GetMonthNames = function (format) {
    var monthNames = {};

    var curDate = new Date();
    for (var i = 0; i < 12; ++i) {
        monthNames[curDate.getMonth()] = curDate.toLocaleDateString('ru-RU', {
            month: format ? format : 'long'
        });

        curDate.setMonth(curDate.getMonth() + 1);
    }

    return monthNames;
};

ru-RUはen-US(アメリカ英語の場合)またはen-GB(イギリス英語の場合)になります。
サラ、


3

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateStringから

toLocaleDateString()メソッドは、この日付の日付部分の言語に敏感な表現の文字列を返します。新しいロケールとオプションの引数により、アプリケーションは、フォーマット規則を使用する言語を指定し、関数の動作をカスタマイズできます。ロケールとオプション引数を無視する古い実装では、使用されるロケールと返される文字列の形式は完全に実装に依存します。

長い形式:

const options = { weekday: 'long' };
const date = new Date();
console.log(date.toLocaleDateString('en-US', options));

一発ギャグ:

console.log(new Date().toLocaleDateString('en-US', { weekday: 'long' }));

注:ロケールには他の言語オプションがありますが、米国英語用にここに提示されているもの


2

たとえば、ローカライズされた日付出力を解析するdatejsを見ることができます。

あなたの例では、フォーマットは次のようになります:

new Date().toString('dddd, d MMMM yyyy at HH:mm:ss') 

1

それは簡単です。toLocaleDateString()で曜日のみを表示するオプションを設定して、名前を取得できます。例えば:

(new Date())。toLocaleDateString( 'en-US'、{weekday: 'long'})は、曜日のみを返します。また、(new Date())。toLocaleDateString( 'en-US'、{month: 'long'})は、その年の月のみを返します。


0
  function currentDate() {
      var monthNames = [ "JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE",
                     "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER" ];
      var days = ['SUNDAY','MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY'];                       
      var today = new Date();
      var dd   = today.getDate();
      var mm   = monthNames[today.getMonth()]; 
      var yyyy = today.getFullYear();
      var day  = days[today.getDay()];
      today = 'Date is :' + dd + '-' + mm + '-' + yyyy;
      document.write(today +"<br>");
      document.write('Day is : ' + day );
  }
  currentDate();

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.