【发布时间】:2012-03-29 11:36:09
【问题描述】:
鉴于dayNumber 来自0 - 6 分别代表Monday - Sunday。
Date/String 对象能否用于从dayNumber 获取星期几?
【问题讨论】:
标签: javascript string date
鉴于dayNumber 来自0 - 6 分别代表Monday - Sunday。
Date/String 对象能否用于从dayNumber 获取星期几?
【问题讨论】:
标签: javascript string date
这将根据您通过的索引为您提供一天:
var weekday=new Array(7);
weekday[0]="Monday";
weekday[1]="Tuesday";
weekday[2]="Wednesday";
weekday[3]="Thursday";
weekday[4]="Friday";
weekday[5]="Saturday";
weekday[6]="Sunday";
console.log("Today is " + weekday[3]);
输出“今天是星期四”
您还可以使用 getDay() 从 JavaScript 获取当前日期索引(但是在此方法中,星期日为 0,星期一为 1,等等):
var d=new Date();
console.log(d.getDay());
星期一时输出 1。
【讨论】:
var dayOfWeek = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
/**
* I convert a day string to an number.
*
* @method dayOfWeekAsInteger
* @param {String} day
* @return {Number} Returns day as number
*/
function dayOfWeekAsInteger(day) {
return ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"].indexOf(day);
}
【讨论】:
此代码是上面给出的修改版本。它返回代表日期的字符串
/**
* Converts a day number to a string.
*
* @param {Number} dayIndex
* @return {String} Returns day as string
*/
function dayOfWeekAsString(dayIndex) {
return ["Sunday", "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][dayIndex] || '';
}
例如
dayOfWeekAsString(0) returns "Sunday"
【讨论】:
getDay() 的实现始于Sunday。应该改为: return ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][dayIndex];
这会将 getDayOfWeek() 函数作为原型添加到 JavaScript Date 类。
Date.prototype.getDayOfWeek = function(){
return ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][ this.getDay() ];
};
【讨论】:
一种更优雅的方式,如果您选择的话,还可以通过区域设置显示工作日,它可以启动最新版本的 ECMA 脚本,并且在所有最新的浏览器和 node.js 中运行:
console.log(new Date().toLocaleString('en-us', { weekday: 'long' }));
【讨论】:
navigator.language 而不是'en-us'。因此,用户以她选择的语言获得她的星期一。
let today= new Date()
//Function To Convert Day Integer to String
function daysToSrting() {
const daysOfWeek = ['Sunday', 'Monday','Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
return daysOfWeek[today.getDay()]
}
console.log(daysToSrting())
【讨论】:
let weekday = ['Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'][new Date().getDay()];
console.log(weekday)
【讨论】:
第一个解决方案非常简单,因为我们只使用getDay() 来获取星期几,从0(星期日)到6(星期六)。
var dayOfTheWeek = (day, month, year) => {
const weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
return weekday[new Date(`${month}/${day}/${year}`).getDay()];
};
console.log(dayOfTheWeek(3, 11, 2020));
第二种解决方案是toLocaleString()内置方法。
var dayOfTheWeek = (day, month, year) => {
return new Date(year, month - 1, day).toLocaleString("en-US", {
weekday: "long",
});
};
console.log(dayOfTheWeek(3, 11, 2020));
第三种方案是基于Zeller's congruence。
function zeller(day, month, year) {
const weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
if (month < 3) {
month += 12;
year--;
}
var h = (day + parseInt(((month + 1) * 26) / 10) +
year + parseInt(year / 4) + 6 * parseInt(year / 100) +
parseInt(year / 400) - 1) % 7;
return weekday[h];
}
console.log(zeller(3, 11, 2020));
【讨论】:
只需使用库moment。
const moment = require('moment')
console.log(moment(person.dateOfBirth,'DD.MM.YYYY').format("dddd {d}"))
输出:
Monday {1}
【讨论】:
如果需要,可以通过使用带有选项参数的Intl.DateTimeFormat 来获取一天的全名(例如“星期一”)。
var Xmas95 = new Date('December 25, 1995 23:15:30');
var options = { weekday: 'long'};
console.log(new Intl.DateTimeFormat('en-US', options).format(Xmas95));
// Monday
console.log(new Intl.DateTimeFormat('de-DE', options).format(Xmas95));
// Montag
【讨论】:
只是为了增加我的两分钱......时刻(这可能不是最好的库选项)有一个方法:
moment.weekday(1) // Monday
moment.weekdaysShort(1) //Mon
顺便说一句,它依赖于语言环境,因此它会为您提供语言集中的名称,这就是我选择此选项的原因。
【讨论】:
如果有任何 Angular 用户,有一个管道可以实现这一点。
{{yourDate | date:'EEEE'}}
【讨论】: