您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# JavaScript如何获取今天星期几
## 引言
在日常开发中,我们经常需要获取当前日期信息,其中星期几是一个常见需求。无论是制作日历应用、显示个性化问候语,还是根据星期安排不同的业务逻辑,掌握JavaScript中获取星期几的方法都至关重要。本文将详细介绍5种不同的实现方式,并分析它们的优缺点。
## 方法一:使用Date对象的getDay()方法
### 基本实现
```javascript
const today = new Date();
const dayOfWeek = today.getDay(); // 返回0(周日)到6(周六)的数字
const days = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
console.log(days[dayOfWeek]);
const options = { weekday: 'long' };
console.log(new Date().toLocaleDateString('zh-CN', options));
// 输出示例:"星期一"
// 英文输出
new Date().toLocaleDateString('en-US', { weekday: 'long' }); // "Monday"
// 简短格式
new Date().toLocaleDateString('zh-CN', { weekday: 'short' }); // "周一"
const formatter = new Intl.DateTimeFormat('zh-CN', { weekday: 'long' });
console.log(formatter.format(new Date()));
当需要多次格式化时,创建Formatter实例比重复调用toLocaleDateString更高效。
moment().format('dddd'); // 英文全称
moment().format('ddd'); // 英文缩写
moment().locale('zh-cn').format('dddd'); // 中文星期
dayjs().format('dddd');
function getChineseWeekday(date = new Date()) {
const day = date.getDay();
const weekdays = [
'星期日', '星期一', '星期二',
'星期三', '星期四', '星期五', '星期六'
];
return weekdays[day];
}
// 支持返回数字或文本
function getWeekday(date = new Date(), format = 'text') {
const day = date.getDay();
return format === 'number' ? day :
['日','一','二','三','四','五','六'][day];
}
通过jsPerf测试(10000次迭代): 1. getDay() + 数组映射:最快(0.12ms) 2. 自定义函数:0.15ms 3. Intl.DateTimeFormat:2.3ms 4. toLocaleDateString:3.1ms
const weekday = getChineseWeekday();
document.getElementById('greeting').textContent = `今天是${weekday},祝您工作愉快!`;
// 周末特殊样式
if ([0, 6].includes(new Date().getDay())) {
document.body.classList.add('weekend-mode');
}
// 只获取周一到周五的数据
const today = new Date().getDay();
if (today >= 1 && today <= 5) {
fetchWorkdayData();
}
Q:为什么getDay()返回的数字从周日开始?
A:这是遵循西方日期惯例(周日为一周的第一天)
Q:国际化方法在不同浏览器表现不一致怎么办?
A:推荐指定完整的locale参数,或使用Intl polyfill
Q:需要处理时区时怎么办?
A:所有方法都可以配合UTC方法使用,如getUTCDay()
根据需求选择最佳方案: - 追求性能:getDay() + 手动映射 - 需要国际化:Intl.DateTimeFormat - 复杂日期处理:Day.js等库 - 特殊需求:自定义工具函数
掌握这些方法后,你就能在项目中灵活处理星期相关的所有需求了! “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。