Мені потрібно відобразити назву дня з датою (наприклад, "23.05.2014"), яку я отримую від третьої сторони.
Я намагався використовувати Date, але отримую лише дату.
Який правильний спосіб отримати назву дня?
Мені потрібно відобразити назву дня з датою (наприклад, "23.05.2014"), яку я отримую від третьої сторони.
Я намагався використовувати Date, але отримую лише дату.
Який правильний спосіб отримати назву дня?
Відповіді:
Ви можете використовувати Date.getDay()метод, який повертає 0 за неділю, до 6 для суботи. Отже, ви можете просто створити масив з іменем імен днів:
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var d = new Date(dateString);
var dayName = days[d.getDay()];
Ось dateStringрядок, який ви отримали від сторонніх API.
Як варіант, якщо вам потрібні перші 3 літери імені дня, ви можете скористатися Dateвбудованим toStringметодом об’єкта :
var d = new Date(dateString);
var dayName = d.toString().split(' ')[0];
Це займе перше слово у d.toString()вихідних даних, яке буде триденною назвою дня.
Ахум, через три роки ...
Чому ніхто не використовує методи, передбачені стандартним класом дати JavaScript (крім Каллума Лінінгтона)?
Отримання назви дня з дати :
function getDayName(dateStr, locale)
{
var date = new Date(dateStr);
return date.toLocaleDateString(locale, { weekday: 'long' });
}
var dateStr = '05/23/2014';
var day = getDayName(dateStr, "nl-NL"); // Gives back 'Vrijdag' which is Dutch for Friday.
Отримання всіх буднів у масиві:
function getWeekDays(locale)
{
var baseDate = new Date(Date.UTC(2017, 0, 2)); // just a Monday
var weekDays = [];
for(i = 0; i < 7; i++)
{
weekDays.push(baseDate.toLocaleDateString(locale, { weekday: 'long' }));
baseDate.setDate(baseDate.getDate() + 1);
}
return weekDays;
}
var weekDays = getWeekDays('nl-NL'); // Gives back { 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag', 'zondag'} which are the days of the week in Dutch.
Для американських дат використовуйте 'en-US' як локаль.
let weekday = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][new Date().getDay()]
var days = [
"Sunday",
"Monday",
"...", //etc
"Saturday"
];
console.log(days[new Date().getDay()]);
Просто, прочитайте об’єкт Date у посібнику JavaScript
Щоб робити інші речі з датою, наприклад отримати читабельний рядок із неї, я використовую:
var d = new Date();
d.toLocaleString();
Якщо ви просто хочете використовувати час або дату:
d.toLocaleTimeString();
d.toLocaleDateString();
Ви можете проаналізувати дати, виконавши:
var d = new Date(dateToParse);
або
var d = Date.parse(dateToParse);
days[new Date().getDay()]
Погляньте на це:
var event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
console.log(event.toLocaleDateString('de-DE', options));
// expected output: Donnerstag, 20. Dezember 2012
console.log(event.toLocaleDateString('ar-EG', options));
// expected output: الخميس، ٢٠ ديسمبر، ٢٠١٢
console.log(event.toLocaleDateString('ko-KR', options));
// expected output: 2012년 12월 20일 목요일
Джерело: Mozilla Doc
Найпростіший і найпростіший спосіб:
var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
var dayName = days[new Date().getDay()];
Я не прихильник надскладних рішень, якщо хтось придумає щось краще, будь ласка, повідомте нам :)
any-name.js
var today = new Date().toLocaleDateString(undefined, {
day: '2-digit',
month: '2-digit',
year: 'numeric',
weekday: 'long'
});
any-name.html
<script>
document.write(today);
</script>
Спробуйте використати цей код:
var event = new Date();
var options = { weekday: 'long' };
console.log(event.toLocaleDateString('en-US', options));
це дасть вам назву дня у рядковому форматі.
Рішення No1
var today = new Date();
var day = today.getDay();
var days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var dayname = days[day];
document.write(dayname);
Рішення No2
var today = new Date();
var day = today.getDay();
switch(day){
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day ="Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thrusday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
break;
}
document.write(day);
Найкоротший один лайнер
Змініть день UTC з 6 на 5, якщо ви хочете, щоб Array починався з неділі.
const getWeekDays = (locale) => [...Array(7).keys()].map((v)=>new Date(Date.UTC(1970, 0, 6+v)).toLocaleDateString(locale, { weekday: 'long' }));
console.log(getWeekDays('de-DE'));
Щоб отримати день з будь-якої заданої дати, просто передайте дату в новий об’єкт Date:
let date = new Date("01/05/2020");
let day = date.toLocaleString('en-us', {weekday: 'long'});
console.log(day);
// expected result = tuesday
Щоб дізнатись більше, перейдіть до mdn-date.prototype.toLocaleString () ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString )
Просто використовуйте його:
function getWeekDayNames(format = 'short', locale = 'ru') {
const names = [];
const date = new Date('2020-05-24');
let days = 7;
while (days !== 0) {
date.setDate(date.getDate() + 1);
names.push(date.toLocaleDateString(locale, { weekday: format }));
days--;
}
return names;
}
Про формати ви можете прочитати тут Документація DateTimeFormat
Рішення в один рядок:
const day = ["sunday","monday","tuesday","wednesday","thursday","friday","saturday"][new Date().getDay()]
Не найкращий метод, замість цього використовуйте масив. Це лише альтернативний метод.
http://www.w3schools.com/jsref/jsref_getday.asp
var date = new Date();
var day = date.getDay();
Вам слід дійсно використовувати google, перш ніж розміщувати тут.
Оскільки інші люди опублікували метод масиву, я покажу вам альтернативний спосіб використання оператора switch.
switch(day) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
... rest of cases
default:
// do something
break;
}
Вищевказане працює, однак масив є кращою альтернативою. Ви також можете використовуватиif() оператори, однак оператор switch буде набагато чистішим, ніж кілька if.
switch? Чому ви використовуєте switchзамість простого Array? Я маю на увазі, я думаю, це альтернатива іншим відповідям ... Але святий час написання, Бетмене ...: /
getDay()щоб отримати номер дня (0-6, 0 == неділя), а потім використовуйте масив назв днів, щоб зіставити число з іменем.