【问题标题】:Use jQuery/JS to determine the DAY OF WEEK使用 jQuery/JS 确定星期几
【发布时间】:2010-11-13 13:02:18
【问题描述】:

是否有使用 JavaScript 或 jQuery 确定星期几的方法?例如,如果用户在框中选择的日期是星期天,我可以提醒他们。

【问题讨论】:

    标签: javascript jquery date


    【解决方案1】:

    更新

    我刚刚在底部添加 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()]
    

    我不认为延期会有什么大不了的事,但因为我在 cmets 中有 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"
    

    Hacktastic 奖励... 如果您只关心缩写,则可以修剪其他所有内容。

    new String(new Date()).replace(/ .*/,'')
    
    // or
    (''+new Date()).split(' ')[0]
    
    // or
    Date().slice(0,3)
    

    【讨论】:

    • 这个相同的字符串可以放在下划线模板中,没有新的 Date() 部分,以方便地格式化 Date 对象。 _.template( '.. ', someDateObject )
    • ["Sun","Mon","Tues","Wednes","Thurs","Fri","Satur"][(new Date()).getDay()]+"day" 由于所有 7 个字符串都以相同的 3 个字母结尾,因此您可以提取它们而不是重复它们。
    • @BrunoBronosky 这种“聪明”的优化会让你抓狂,如果你想国际化你的应用...
    【解决方案2】:

    发送日期,您将获得该月同一天的位置。即 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;
        }
    

    【讨论】:

    • 您能否为您的答案添加一些解释?只显示代码可能会造成混淆。
    【解决方案3】:
    today = new Date()
    dayIndex = today.getDay()
    

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

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

    【讨论】:

    • 星期天是零 :) 因为它是来自美国的语言。在欧洲,将星期一设为零会更有意义,但这里并非如此。
    【解决方案4】:
    new Date().getDay();  //0=Sun, 1=Mon, ..., 6=Sat
    

    另请参阅:MDN 上的Javascript Date Object

    注意事项:这会在浏览器上返回星期几。由于地球不是平坦的,因此某些用户的星期几可能与您的服务器的星期几不同。这可能与您的项目相关,也可能不相关...

    如果您正在做大量的日期工作,您可能需要查看 JavaScript 日期库,例如 DatejsMoment.js

    【讨论】:

    【解决方案5】:

    更清晰更详细的答案:

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

    工作fiddle

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        猜你喜欢
        • 2013-02-14
        • 2016-06-27
        • 1970-01-01
        • 2022-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多