我需要显示从第三方获得的给定日期(例如“ 05/23/2014”)的日期名称。
我尝试使用Date,但只得到日期。
取得日期名称的正确方法是什么?
Answers:
您可以使用该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()输出中的第一个单词,即3个字母的天名称。
Ahum,三年后...
为什么没人使用标准javascript Date类提供的方法(Callum Linington除外)?
从日期获取日期名称:
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()]);
简单,请阅读JavaScript手册中的Date对象
为了对日期做其他事情,例如从日期中获取可读的字符串,我使用:
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 event = new Date();
var options = { weekday: 'long' };
console.log(event.toLocaleDateString('en-US', options));
这将为您提供字符串格式的日期名称。
如果有人提出更好的解决方案,我不喜欢过于复杂的解决方案,请告诉我们:)
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 today = new Date();
var day = today.getDay();
var days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var dayname = days[day];
document.write(dayname);
解决方案2
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);
只需使用它:
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
不是最好的方法,而是使用数组。这只是一种替代方法。
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?为什么要用aswitch代替简单的Array?我的意思是,我猜想它是其他答案的替代方法……但是写作时间,蝙蝠侠……:/
getDay()以获取日期数字(0-6,0 == Sunday),然后使用日期名称数组将数字映射到名称。