【发布时间】:2014-09-19 20:09:50
【问题描述】:
我需要显示给定日期的日期名称(例如“05/23/2014”),这是我从第 3 方获得的。
我试过使用Date,但我只得到日期。
获取当天名称的正确方法是什么?
【问题讨论】:
-
将其转换为日期,然后调用
getDay()获取日期编号(0-6, 0==Sunday),然后使用日期名称数组将编号映射到名字。
标签: javascript jquery
我需要显示给定日期的日期名称(例如“05/23/2014”),这是我从第 3 方获得的。
我试过使用Date,但我只得到日期。
获取当天名称的正确方法是什么?
【问题讨论】:
getDay() 获取日期编号(0-6, 0==Sunday),然后使用日期名称数组将编号映射到名字。
标签: javascript jquery
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()]
不是最好的方法,而是使用数组。这只是一种替代方法。
http://www.w3schools.com/jsref/jsref_getday.asp
var date = new Date();
var day = date.getDay();
在此处发帖之前,您应该真正使用谷歌。
由于其他人发布了数组方法,我将向您展示另一种使用 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?我的意思是,我想这是其他答案的替代品......但是神圣的写作时间,蝙蝠侠......:/
您可以使用 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() 输出中的第一个单词,即由三个字母组成的日期名称。
【讨论】:
let weekday = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][new Date().getDay()]
【讨论】:
你可以使用一个对象
var days = {
'Mon': 'Monday',
'etc..': 'etc..',
'Fri': 'Friday'
}
var date = new Date().toString().split(' ')[0]; //get day abreviation first
console.log(days[date]);
【讨论】:
嗯,三年后……
为什么没有人使用标准 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”作为语言环境。
【讨论】:
尝试使用此代码:
var event = new Date();
var options = { weekday: 'long' };
console.log(event.toLocaleDateString('en-US', options));
这将为您提供字符串格式的日期名称。
【讨论】:
使用 Date.toLocaleString() 方法:
new Date(dateString).toLocaleString('en-us', {weekday:'long'})
【讨论】:
看看这个:
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()];
【讨论】:
随便用吧:
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;
}
关于你可以在这里阅读的格式Documentation DateTimeFormat
【讨论】:
我不喜欢过于复杂的解决方案,如果其他人想出更好的解决方案,请告诉我们:)
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);
解决方案二
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。
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'));
【讨论】:
单线解决方案:
const day = ["sunday","monday","tuesday","wednesday","thursday","friday","saturday"][new Date().getDay()]
【讨论】:
要从任何给定日期获取日期,只需将日期传递给新的 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)
【讨论】:
另一种选择是使用内置函数Intl.DateTimeFormat,例如:
function getDayName(dateString) {
const [date, options] = [new Date(dateString), {weekday: 'long'}];
return new Intl.DateTimeFormat('en-Us', options).format(date);
}
<label for="inp">Enter a date string in the format "MM/DD/YYYY" or "YYYY-MM-DD" and press "OK":</label><br>
<input type="text" id="inp" value="01/31/2021">
<button onclick="alert(getDayName(document.getElementById('inp').value))">OK</button>
【讨论】:
var dayName =['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var day = dayName[new Date().getDay()];
console.log(day)
【讨论】:
let weekday = new Date(dateString).toLocaleString('en-us', {weekday:'long'});
console.log('Weekday',weekday);
【讨论】:
let dateString = '5/23/2014'
// converting Date String to Javascript Date Format
let day = new Date(dateString).getDay();
let month = new Date(dateString).getMonth()
let year = new Date(dateString).getFullYear()
let dayName;
if (day ==0){
dayName= 'Sunday'
}else if (day == 1){
dayName= 'Monday'
}else if (day == 2){
dayName= 'Tuesday'
}else if (day == 3){
dayName= 'Wednesday'
}else if (day == 4){
dayName= 'Thursday'
}else if (day ==5){
dayName= 'Friday'
}else {
dayName= 'Saturday'
}
console.log(`Day : ${dayName} Month: ${month+1} Year : ${year}`)
【讨论】:
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// request a weekday along with a long date
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
console.log(date.toLocaleDateString('de-DE', options));
// → "Donnerstag, 20. Dezember 2012"
// an application may want to use UTC and make that visible
options.timeZone = 'UTC';
options.timeZoneName = 'short';
console.log(date.toLocaleDateString('en-US', options));
// → "Thursday, December 20, 2012, UTC"
【讨论】: