よく日付の管理において曜日を取り扱うことがあります。おおむね世界共通で一週間は7日ですが、各日の曜日を表す文字列は様々です。このためプログラミング言語の中において、曜日は数値で扱われます。次に上げるのは各言語の曜日と数値の対応表です。
| 日本語 | 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|---|
| JavaScript | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| PHP | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| ISO 8601 | 7 | 1 | 2 | 3 | 4 | 5 | 6 |
| MySQL | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| Python | 6 | 0 | 1 | 2 | 3 | 4 | 5 |
| Go | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
Date.prototype.getDay() – JavaScript | MDN
PHP: DateTime::format – Manual
MySQL :: MySQL 8.0 リファレンスマニュアル :: 12.7 日付および時間関数
datetime — 基本的な日付型および時間型 — Python 3.9.4 ドキュメント
time · pkg.go.dev
日曜を 0 とするのが多数派ですが、案外違いがあります。都度次のような言語用の定数を用意しておくと言語を渡って何かをする際に便利です。
const SQL_DAY_OF_WEEK = {
SUNDAY: 1,
MONDAY: 2,
TUESDAY: 3,
WEDNESDAY: 4,
THURSDAY: 5,
FRIDAY: 6,
SATURDAY: 7,
};
export const useSqlDayOfWeekOptions = (selectedValue?: unknown): SelectOption[] => {
if (typeof selectedValue === 'string' && selectedValue.match(/^[1-7]$/)) {
selectedValue = Number(selectedValue);
}
return [
{ label: '月曜日', value: SQL_DAY_OF_WEEK.MONDAY, selected: selectedValue === SQL_DAY_OF_WEEK.MONDAY },
{ label: '火曜日', value: SQL_DAY_OF_WEEK.TUESDAY, selected: selectedValue === SQL_DAY_OF_WEEK.TUESDAY },
{ label: '水曜日', value: SQL_DAY_OF_WEEK.WEDNESDAY, selected: selectedValue === SQL_DAY_OF_WEEK.WEDNESDAY },
{ label: '木曜日', value: SQL_DAY_OF_WEEK.THURSDAY, selected: selectedValue === SQL_DAY_OF_WEEK.THURSDAY },
{ label: '金曜日', value: SQL_DAY_OF_WEEK.FRIDAY, selected: selectedValue === SQL_DAY_OF_WEEK.FRIDAY },
{ label: '土曜日', value: SQL_DAY_OF_WEEK.SATURDAY, selected: selectedValue === SQL_DAY_OF_WEEK.SATURDAY },
{ label: '日曜日', value: SQL_DAY_OF_WEEK.SUNDAY, selected: selectedValue === SQL_DAY_OF_WEEK.SUNDAY },
];
};