繁体   English   中英

如何从 JavaScript 中的天数获取星期几?

[英]How to get the day of the week from the day number in JavaScript?

给定的dayNumber是从0 - 6分别代表Monday - Sunday

可以使用Date / String对象从dayNumber获取星期几吗?

一种更优雅的方式,如果您选择,还可以通过区域设置显示工作日,它可以启动最新版本的 ECMA 脚本并在所有最新的浏览器和 node.js 中运行:

 console.log(new Date().toLocaleString('en-us', { weekday: 'long' }));

这将根据您传递的索引为您提供一天:

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。

此代码是上面给出的修改版本。 它返回代表日期的字符串

/**
* 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"
/**
* 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);
}

这将添加一个 getDayOfWeek() 函数作为 JavaScript Date 类的原型。

Date.prototype.getDayOfWeek = function(){   
    return ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][ this.getDay() ];
};

第一个解决方案非常简单,因为我们只使用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 的同余

 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));

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)

只需使用图书馆moment

const moment = require('moment')
console.log(moment(person.dateOfBirth,'DD.MM.YYYY').format("dddd {d}"))

输出:

Monday {1}

如果需要,可以通过使用Intl.DateTimeFormat和 options 参数来获取一天的全名(例如“Monday”)。

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.weekdays(1) // Monday
moment.weekdaysShort(1) //Mon

顺便说一句,它依赖于语言环境,因此它会为您提供语言集中的名称,这就是我选择此选项的原因。

如果有任何Angular用户,有一个管道可以实现这一点。

{{yourDate | date:'EEEE'}}
const language = 'en-us';
const options = {  weekday: 'long' };
const today = new Date().toLocaleString(language, options)
cosnsole.log(today)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM