【问题标题】:Day Name from Date in JSJS中日期的日期名称
【发布时间】:2014-09-19 20:09:50
【问题描述】:

我需要显示给定日期的日期名称(例如“05/23/2014”),这是我从第 3 方获得的。

我试过使用Date,但我只得到日期。

获取当天名称的正确方法是什么?

【问题讨论】:

  • 将其转换为日期,然后调用getDay() 获取日期编号(0-6, 0==Sunday),然后使用日期名称数组将编号映射到名字。

标签: javascript jquery


【解决方案1】:
var days = [
    "Sunday",
    "Monday",
    "...", //etc
    "Saturday"
];

console.log(days[new Date().getDay()]);

简单,阅读 JavaScript 手册中的 Date 对象

要使用日期做其他事情,例如从中获取可读字符串,我使用:

var d = new Date();
d.toLocaleString();

如果您只想要时间或日期,请使用:

d.toLocaleTimeString();
d.toLocaleDateString();

您可以通过以下方式解析日期:

var d = new Date(dateToParse);

var d = Date.parse(dateToParse);

【讨论】:

  • days[Date.now().getDay() 是错误的,因为 Date.now() 返回的是数字,而不是日期。
  • 应该是days[new Date().getDay()]
【解决方案2】:

不是最好的方法,而是使用数组。这只是一种替代方法。

http://www.w3schools.com/jsref/jsref_getday.asp

var date = new Date();
var day = date.getDay();

在此处发帖之前,您应该真正使用谷歌。

由于其他人发布了数组方法,我将向您展示另一种使用 switch 语句的方法。

switch(day) {
    case 0:
        day = "Sunday";
        break;
    case 1:
        day = "Monday";
        break;

    ... rest of cases

    default:
        // do something
        break;
}

上述方法有效,但是,数组是更好的选择。你也可以使用if() 语句,但是一个 switch 语句会比几个 if 更简洁。

【讨论】:

  • 这将返回一个从 0 到 6 的数值——不是星期几。
  • 您可以从那里处理它并将其转换为一天。
  • 确实如此。我只是让你知道,这并没有按原样回答 OP 的问题。
  • 一个switch?为什么要使用switch 而不是简单的Array?我的意思是,我想这是其他答案的替代品......但是神圣的写作时间,蝙蝠侠......:/
  • 因为为什么要发布与其他 2 人相同的内容?
【解决方案3】:

您可以使用 Date.getDay() 方法,该方法返回 0 表示周日,最多返回 6 表示周六。因此,您可以简单地使用日期名称创建一个数组:

var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var d = new Date(dateString);
var dayName = days[d.getDay()];

这里的dateString 是您从第三方API 收到的字符串。

或者,如果您想要日期名称的前 3 个字母,您可以使用 Date 对象的内置 toString 方法:

var d = new Date(dateString);
var dayName = d.toString().split(' ')[0];

这将采用d.toString() 输出中的第一个单词,即由三个字母组成的日期名称。

【讨论】:

  • 这可能不是最好的方法。标准的 Javascript Date 类提供了获取全名的方法。看看我的回答。
  • 但是...“标准 Javascript 日期类”不适用于所有浏览器。
  • @HernánEche 根据developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 每个浏览器都支持 Date 就好了。哪个浏览器不适合你?
  • @HernánEche JavaFx,据我在互联网上找到的,是 Java,而不是 JavaScript。这些语言完全不同,因此您应该尝试寻找与 Java 相关的东西。有关更多信息,请参阅thesoftwareguild.com/faq/difference-between-java-and-javascript(或 Google 上“java 和 javascript 之间的差异”下的任何其他结果)。
  • @Joeytje50 如果你继续搜索,你会“在互联网上发现”Javascript 也可以从 Java 中运行,使用 WebView 对象和 WebEngine,你可以加载网页、创建文档模型、css 样式和运行 JavaScript,不客气。
【解决方案4】:
let weekday = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][new Date().getDay()]

【讨论】:

    【解决方案5】:

    你可以使用一个对象

    var days = {
       'Mon': 'Monday',
       'etc..': 'etc..',
       'Fri': 'Friday'
    }
    
    var date = new Date().toString().split(' ')[0]; //get day abreviation first
    console.log(days[date]);
    

    【讨论】:

      【解决方案6】:

      嗯,三年后……

      为什么没有人使用标准 javascript Date 类提供的方法(Callum Linington 除外)?

      https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

      从日期中获取日期名称

      function getDayName(dateStr, locale)
      {
          var date = new Date(dateStr);
          return date.toLocaleDateString(locale, { weekday: 'long' });        
      }
      
      var dateStr = '05/23/2014';
      var day = getDayName(dateStr, "nl-NL"); // Gives back 'Vrijdag' which is Dutch for Friday.
      

      在一个数组中获取所有工作日:

      function getWeekDays(locale)
      {
          var baseDate = new Date(Date.UTC(2017, 0, 2)); // just a Monday
          var weekDays = [];
          for(i = 0; i < 7; i++)
          {       
              weekDays.push(baseDate.toLocaleDateString(locale, { weekday: 'long' }));
              baseDate.setDate(baseDate.getDate() + 1);       
          }
          return weekDays;
      }
      
      var weekDays = getWeekDays('nl-NL'); // Gives back { 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag', 'zondag'} which are the days of the week in Dutch.
      

      对于美国日期,使用“en-US”作为语言环境。

      【讨论】:

      • 在发布我的解决方案时,我根本不知道这种方法存在。确实非常好的解决方案。这也很好,这直接提供了国际化。另外,很高兴能学到一些新东西:P
      • 有些人可能不使用它的可能原因是,根据您链接到的页面,似乎与移动平台上的语言环境不完全兼容。
      • @John Jun:是的。目前,大多数移动设备上的浏览器都支持它。最值得注意的是,默认的 Android 浏览器没有。 Android 上的 Chrome 可以。 (无论如何,建议在 Android 上使用 Chrome。不同的讨论。)
      • 仅在 IE10 中部分有效。工作日被识别,但总是返回长名称,即使我指定“短”。 'short' 在 Chrome 中确实有效。 IE10 也无法识别“月”关键字。它只返回一个日期,如与“long”一起使用时的“Thu Jan 1 1970”,而 Chrome 确实返回长月份名称。
      • 嗯,让我换个说法。经过更多的摆弄,IE10 似乎不会打扰您指定的任何内容,甚至不会打扰您指定的语言环境。它总是根据操作系统区域设置返回一个带有长名称的完整日期。
      【解决方案7】:

      尝试使用此代码:

      var event = new Date();
      var options = { weekday: 'long' };
      console.log(event.toLocaleDateString('en-US', options));
      

      这将为您提供字符串格式的日期名称。

      【讨论】:

      【解决方案8】:

      使用 Date.toLocaleString() 方法:

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

      【讨论】:

      • 哇超级快速的功能♥
      【解决方案9】:

      看看这个:

      var event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
      
      var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
      
      console.log(event.toLocaleDateString('de-DE', options));
      // expected output: Donnerstag, 20. Dezember 2012
      
      console.log(event.toLocaleDateString('ar-EG', options));
      // expected output: الخميس، ٢٠ ديسمبر، ٢٠١٢
      
      console.log(event.toLocaleDateString('ko-KR', options));
      // expected output: 2012년 12월 20일 목요일
      

      来源:Mozilla Doc

      【讨论】:

        【解决方案10】:

        最简单最简单的方法:

        var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
        var dayName = days[new Date().getDay()];
        

        【讨论】:

          【解决方案11】:

          随便用吧:

          function getWeekDayNames(format = 'short', locale = 'ru') {
            const names = [];
            const date = new Date('2020-05-24');
            let days = 7;
          
            while (days !== 0) {
              date.setDate(date.getDate() + 1);
              names.push(date.toLocaleDateString(locale, { weekday: format }));
              days--;
            }
          
            return names;
          }

          关于你可以在这里阅读的格式Documentation DateTimeFormat

          【讨论】:

            【解决方案12】:

            我不喜欢过于复杂的解决方案,如果其他人想出更好的解决方案,请告诉我们:)

            any-name.js
            
            var today = new Date().toLocaleDateString(undefined, {
                day: '2-digit',
                month: '2-digit',
                year: 'numeric',
                weekday: 'long'
            });
            
            any-name.html
            <script>
                document.write(today);
            </script>
            

            【讨论】:

              【解决方案13】:

              解决方案一

              var today = new Date();
              
                var day = today.getDay();
              
                var days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
              
                var dayname = days[day];
              
                document.write(dayname);
              

              解决方案二

                    var today = new Date();
              
                var day = today.getDay();
              
                switch(day){
                  case 0:
                  day = "Sunday";
                  break;
              
                  case 1:
                  day = "Monday";
                  break;
              
                  case 2:
                  day ="Tuesday";
                  break;
              
                  case 3:
                  day = "Wednesday";
                  break;
              
                  case 4:
                  day = "Thrusday";
                  break;
              
                  case 5:
                  day = "Friday";
                  break;
              
                  case 6:
                  day = "Saturday";
                  break;
                }
              
              
              document.write(day);
              

              【讨论】:

                【解决方案14】:

                最短的一条线

                如果您希望数组从星期日开始,请将 UTC 日期从 6 更改为 5。

                const getWeekDays = (locale) => [...Array(7).keys()].map((v)=>new Date(Date.UTC(1970, 0, 6+v)).toLocaleDateString(locale, { weekday: 'long' }));
                
                console.log(getWeekDays('de-DE')); 

                【讨论】:

                  【解决方案15】:

                  单线解决方案:

                  const day = ["sunday","monday","tuesday","wednesday","thursday","friday","saturday"][new Date().getDay()]
                  

                  【讨论】:

                    【解决方案16】:

                    要从任何给定日期获取日期,只需将日期传递给新的 Date 对象:

                    let date = new Date("01/05/2020");
                    let day = date.toLocaleString('en-us', {weekday: 'long'});
                    console.log(day);
                    // expected result = tuesday
                    

                    要了解更多信息,请转到 mdn-date.prototype.toLocaleString()(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString)

                    【讨论】:

                      【解决方案17】:

                      另一种选择是使用内置函数Intl.DateTimeFormat,例如:

                      function getDayName(dateString) {
                          const [date, options] = [new Date(dateString), {weekday: 'long'}];
                          return new Intl.DateTimeFormat('en-Us', options).format(date);
                      }
                      <label for="inp">Enter a date string in the format "MM/DD/YYYY" or "YYYY-MM-DD" and press "OK":</label><br>
                      <input type="text" id="inp" value="01/31/2021">
                      <button onclick="alert(getDayName(document.getElementById('inp').value))">OK</button>

                      【讨论】:

                        【解决方案18】:

                        var dayName =['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
                        var day = dayName[new Date().getDay()];
                        console.log(day)

                        【讨论】:

                          【解决方案19】:
                          let weekday = new Date(dateString).toLocaleString('en-us', {weekday:'long'});
                          console.log('Weekday',weekday);
                          

                          【讨论】:

                            【解决方案20】:

                            我以这种方式解决了这个问题。希望对你有帮助

                            let dateString = '5/23/2014'  
                            
                            // converting Date String to Javascript Date Format
                            let day = new Date(dateString).getDay();
                            let month = new Date(dateString).getMonth()
                            let year =  new Date(dateString).getFullYear()
                            let dayName;
                            
                            if (day ==0){
                                dayName= 'Sunday'
                            }else if (day == 1){
                                dayName= 'Monday'
                            }else if (day == 2){
                                dayName= 'Tuesday'
                            }else if (day == 3){
                                dayName= 'Wednesday'
                            }else if (day == 4){
                                dayName= 'Thursday'
                            }else if (day ==5){
                                dayName= 'Friday'
                            }else {
                                dayName= 'Saturday'
                            }
                            
                            console.log(`Day : ${dayName} Month: ${month+1} Year : ${year}`)
                            

                            【讨论】:

                            • 听说过数组吗?
                            【解决方案21】:
                            var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
                            
                            // request a weekday along with a long date
                            var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
                            console.log(date.toLocaleDateString('de-DE', options));
                            // → "Donnerstag, 20. Dezember 2012"
                            
                            // an application may want to use UTC and make that visible
                            options.timeZone = 'UTC';
                            options.timeZoneName = 'short';
                            console.log(date.toLocaleDateString('en-US', options));
                            // → "Thursday, December 20, 2012, UTC"
                            

                            【讨论】:

                              猜你喜欢
                              • 2017-12-03
                              • 1970-01-01
                              • 2021-08-21
                              • 2020-05-18
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2015-02-24
                              相关资源
                              最近更新 更多