153

私は 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;

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

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

4

15 に答える 15

275

はい、配列が必要です。

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();
于 2011-01-27T22:50:19.540 に答える
12

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

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

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

于 2016-02-19T11:51:04.827 に答える
9

@ 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>

于 2016-05-17T11:02:18.927 に答える
5

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

このようなもの:

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;
于 2011-01-27T22:57:25.473 に答える
3

http://phrogz.net/JS/FormatDateTime_JS.txtを使用すると、次のことができます。

var now = new Date;
var prnDt = now.customFormat( "Printed on #DDDD#, #D# #MMMM# #YYYY# at #hhh#:#mm#:#ss#" );
于 2011-01-27T22:53:24.577 に答える
1

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

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

于 2018-09-23T11:11:43.663 に答える