使用jQuery/JS确定星期几

25

是否有使用JavaScript或jQuery来确定今天是星期几的方法?例如,如果用户选择的日期是星期日,我可以弹出提醒。

6个回答

57
new Date().getDay();  //0=Sun, 1=Mon, ..., 6=Sat

另请参阅:MDN 上的 Javascript Date 对象

警告:此方法在浏览器中返回一周中的某一天。由于地球不是平的,对于某些用户来说,一周中的某一天可能与您的服务器上的一周中的某一天不同。这可能与您的项目相关或不相关...

如果您需要处理大量日期工作,请考虑使用 JavaScript 日期库,例如DatejsMoment.js


1
MDN上的“Javascript日期对象”页面包括浏览器支持(在这种情况下非常好)。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date - Jim Arment

24

更新

我刚刚在底部添加"hacktastic"奖励时发现了我最喜欢的方法。

new Date().toLocaleDateString('en', {weekday:'long'})
// returns "Thursday"
new Date().toLocaleDateString('en', {weekday:'short'})
// returns "Thu"
new Date().toLocaleDateString('es', {weekday:'long'})
// returns "jueves"
new Date().toLocaleDateString('es', {weekday:'short'})
// returns "jue."
new Date().toLocaleDateString('fr', {weekday:'long'})
// returns "jeudi"
new Date().toLocaleDateString('fr', {weekday:'short'})
// returns "jeu."

原始回答

如果您只需要在页面中使用一次,那么保持简单即可...

["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][(new Date()).getDay()]

我以前并没有认为这是一个大问题,但是因为在评论中有3个关于国际化的投票...

// dictionary version
({
  es: ["Domingo", "Lunes",  "Martes",  "Miércoles", "Jueves",   "Viernes", "Sábado"],
  en: ["Sunday",  "Monday", "Tuesday", "Wednesday", "Thursday", "Friday",  "Saturday"]
})['en'][(new Date()).getDay()]
// returns "Wednesday"

// list version
langs=['en','es']

[
  ["Domingo", "Lunes",  "Martes",  "Miércoles", "Jueves",   "Viernes", "Sábado"],
  ["Sunday",  "Monday", "Tuesday", "Wednesday", "Thursday", "Friday",  "Saturday"]
][langs.indexOf('es')][(new Date()).getDay()]
// returns "Miércoles"

最后,这是代码高尔夫版本...

["Sun","Mon","Tues","Wednes","Thurs","Fri","Satur"][(new Date()).getDay()]+"day"

如果您只关心缩写,您可以截取其余部分。

new String(new Date()).replace(/ .*/,'')

// or
(''+new Date()).split(' ')[0]

// or
Date().slice(0,3)

同样的字符串可以放入下划线模板中,不需要 new Date() 部分,以便方便地格式化日期对象。 _.template( '<%= getMonth()+1 %>.<%= getDate() %>.<%= getFullYear() %> <%= ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"][getDay()] %>', someDateObject ) - grantwparks
1
你可以提取这7个字符串的最后3个字母,而不是重复它们:["日","一","二","三","四","五","六"][ (new Date()).getDay() ] + "曜日" - Bruno Bronosky
3
如果您想国际化您的应用程序,那种“聪明”的优化方法会让某些人变得非常疯狂。 - Kip

9
today = new Date()
dayIndex = today.getDay()

...会为您提供“今天”的数字表示。

0 = Sunday
1 = Monday
2 = Tuesday
3 = Wednesday
4 = Thursday
5 = Friday
6 = Saturday

零是星期天 :) 因为这是美国的语言。在欧洲,把星期一作为零会更有意义,但这里不是这种情况。 - Emil Stenström

7
一个更清晰、更详细的答案:
var days = [
    'SUN', //Sunday starts at 0
    'MON',
    'TUE',
    'WED',
    'THU',
    'FRI',
    'SAT'
];

d = new Date(); //This returns Wed Apr 02 2014 17:28:55 GMT+0800 (Malay Peninsula Standard Time)
x = d.getDay(); //This returns a number, starting with 0 for Sunday

alert (days[x]);

请参考这个 代码编辑器


2
如果您需要处理大量的日期数据,请查看 DateJS

0
发送日期,您将获得该月同一天的位置。即,2018年2月15日是第三个星期四。
 /*return day postion and dayname */
    function weekAndDay(date) {
        var arrayWeek =[];
        var date = new Date(date),
        days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],
        prefixes = ['','First', 'Second', 'Third', 'Fourth', 'Fifth'];
        if (date.getDate() % 7 == 0) {
            var prefixes2 = date.getDate() / 7;
        }else{
            var prefixes2 = Math.ceil(date.getDate() / 7);
        }
        arrayWeek.push({
            'dayPos' : prefixes[prefixes2] ,
            'dayName' : days[date.getDay()]
        });
        return arrayWeek;
    }

你能否在回答中加入一些说明呢?仅仅展示代码可能会令人困惑。 - André Kool

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接