web-dev-qa-db-ja.com

JavaScriptを使用してDateオブジェクトまたは日付文字列から平日を取得する

(yyyy-mm-dd)形式の日付文字列がありますが、それから曜日名を取得するにはどうすればよいですか?

例:

  • 文字列「2013-07-31」の場合、出力は「水曜日」になります
  • new Date()を使用した今日の日付の場合、出力は現在の曜日に基づきます
17
dpmzmdr

この関数を使用します。日付文字列の検証が付属しています。

この関数をプロジェクトのどこかに含めると、

// Accepts a Date object or date string that is recognized by the Date.parse() method
function getDayOfWeek(date) {
  const dayOfWeek = new Date(date).getDay();    
  return isNaN(dayOfWeek) ? null : 
    ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][dayOfWeek];
}

次のように、どこでも簡単に使用できます。

getDayOfWeek( "2013-07-31" )
> "Wednesday"

getDayOfWeek( new Date() ) // or
getDayOfWeek( Date.now() )
> // (will return today's day. See demo jsfiddle below...)

無効な日付文字列を使用すると、nullが返されます。

getDayOfWeek( "~invalid string~" );
> null

有効な日付文字列は、MDN JavaScriptリファレンスで説明されている Date.parse()メソッド に基づいています。

デモ:http://jsfiddle.net/samliew/fo1nnsgp/


もちろん、タイムゾーンが必要な場合は moment.js プラグイン、特にを使用することもできます。

22
Samuel Liew

以下のコードを使用してください:

var gsDayNames = [
  'Sunday',
  'Monday',
  'Tuesday',
  'Wednesday',
  'Thursday',
  'Friday',
  'Saturday'
];

var d = new Date("2013-07-31");
var dayName = gsDayNames[d.getDay()];
//dayName will return the name of day
6
Code Lღver

こちらがワンライナーソリューションですが、まずサポートを確認してください。

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

let today2 = new Intl.DateTimeFormat('en-US', {weekday: 'long'}).format(current);

Intl.DateTimeFormatオブジェクトのドキュメント

localeDateStringのドキュメント

5
Black Mamba

関数を記述したくない場合は、ユーザー定義のフォーマットコード「NNNN」を使用してください。これは、日付を含むセルに曜日を出力します。 (スプレッドシートにWordを表示するだけでなく)本当に文字列が必要な場合は、式を入力できます

=TEXT(A1;"NNNN")

結果として、曜日を含む文字列になります。

0
achimt