【问题标题】:Formatting a Date string in JavaScript在 JavaScript 中格式化日期字符串
【发布时间】:2012-02-11 13:36:16
【问题描述】:

我有一个如下所示的日期字符串:

2012 年 2 月 9 日星期四 01:50:00 GMT+0000(GMT 标准时间)

我基本上需要将其重新格式化为 2 个字符串(一个用于日期,一个用于时间)。

日期格式需为:

m-d-Y (01-16-2012)

时间应该是

H:i (10:30)

【问题讨论】:

标签: javascript ajax date format


【解决方案1】:

我建议你看看Datejs。它是一个用于解析日期的优秀 JavaScript 库。 (使用 jQuery 来清洁)

<script type="text/javascript" src="http://www.datejs.com/build/date.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<div id="date"></div>
<div id="time"></div>
<script type="text/javascript">
var d = "Thu Feb 09 2012 01:50:00 GMT+0000";
var dout = Date.parse(d);
$("#date").text(dout.toString('M-d-yyyy')); 
$("#time").text(dout.toString('HH:mm'));     
</script>

【讨论】:

    【解决方案2】:

    您可能想看看Moment.js

    我相信 DateJS 扩展了原生 JavaScript 日期对象,可能不是你想要的。我很确定 MomentJS(受到 DateJS 的启发)不会扩展本机 Date 对象。

    查看 Moment.js 的文档,这应该可以为您解决问题:http://momentjs.com/docs/#/parsing/string+format

    var foo = moment(stringDateValue, 'MM-DD-YYYY hh:mm');

    【讨论】:

      【解决方案3】:

      我不确定内置的Date 对象,但Datejs 可以做到这一点。

      使用 Datejs 的toString 方法:

      var now = new Date();
      console.log(now.toString('MM-dd-yyyy')); // 01-16-2012
      console.log(now.toString('HH:mm')); // 10:30
      

      演示:http://jsfiddle.net/b3wgR/3

      编辑:如果您的日期来自字符串,Datejs 可以为您parse

      var str = "Thu Feb 09 2012 01:50:00 GMT+0000";
      var date = Date.parse(str);
      console.log(date.toString('MM-dd-yyyy')); // 02-09-2012
      console.log(date.toString('HH:mm')); // 01:50
      

      演示:http://jsfiddle.net/RY5jb/

      【讨论】:

      • 唯一可能出错的是我没有生成日期字符串,如何将我的日期字符串传递给该函数? (我的日期字符串将存储为 var)
      • @DarkMantis:检查我的编辑,Datejs 可以将字符串解析成Date 对象
      【解决方案4】:
          var td = new Date();
          var weekday = new Array(7);
          weekday[0] = "Sunday";
          weekday[1] = "Monday";
          weekday[2] = "Tuesday";
          weekday[3] = "Wednesday";
          weekday[4] = "Thursday";
          weekday[5] = "Friday";
          weekday[6] = "Saturday";
      
          var month_name = new Array(12);
          month_name[0] = "January";
          month_name[1] = "February";
          month_name[2] = "March";
          month_name[3] = "April";
          month_name[4] = "May";
          month_name[5] = "June";
          month_name[6] = "July";
          month_name[7] = "August";
          month_name[8] = "September";
          month_name[9] = "October";
          month_name[10] = "November";
          month_name[11] = "December"; 
      
         document.getElementById("TodayDate").innerHTML = weekday[td.getDay()] + ", " + month_name[td.getMonth()] + " " + td.getDate() + ", " + td.getFullYear();
      

      现在的输出是这样的: 2014 年 5 月 22 日星期四

      演示: http://jsfiddle.net/satishverma143/xSAbK/

      【讨论】:

        【解决方案5】:

        这里是 new Date().format("MM-DD-YYYY HH:mm"); 的 polyfill;

        它会返回一个你想要的任何格式的字符串

        https://github.com/UziTech/js-date-format

        【讨论】:

          【解决方案6】:
          //example: dateFormater("D, M n, Y h:ft", new Date(), 2)
          //results: a formated date two days from now -> Sunday, February 10, 2013 3:07pm
          //today is Friday 2/8/13
          function dateFormater (mod, nDate, addDay) {
              var daysFull = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
              var daysAbbr = ["Sun.", "Mon.", "Tue.", "Wed.", "Thu.", "Fri.", "Sat."];
              var monthsFull = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
              var monthsAbbr = ["Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."];
              var moddt = "";
              var tmp;
              
              //add days to date (use -1 to subtract days
              if (typeof addDay !== 'undefined') nDate.setDate(nDate.getDate() + addDay);
              
              var dateMod = mod.split("");
              for (el in dateMod) {
                  switch(dateMod[el]) {
                      //Delimiters: ,=, /=/ " "=" " :=:
                      case ",":
                          moddt += dateMod[el];
                          break;
                      case "/":
                          moddt += dateMod[el];
                          break;
                      case " ":
                          moddt += dateMod[el];
                          break;
                      case ":":
                          moddt += dateMod[el];
                          break;
                      
                      //Month: M=January m=Jan. J=01 j=1
                      case "M":
                          moddt += monthsFull[nDate.getMonth()];
                          break;
                      case "m":
                          moddt += monthsAbbr[nDate.getMonth()];
                          break;
                      case "J":
                          tmp = nDate.getDate();
                          tmp = tmp.toString();
                          if (tmp.length == 1) {
                              moddt += "0" + tmp;
                          } else {
                              moddt += tmp;
                          }
                          break;
                      case "j":
                          tmp = nDate.getDate();
                          moddt += tmp.toString();
                          break;
          
                      //Day: D=Monday d=Mon. N=01 n=1
                      case "D":
                          moddt += daysFull[nDate.getDay()];
                          break;
                      case "d":
                          moddt += daysAbbr[nDate.getDay()];
                          break;
                      case "N":
                          tmp = nDate.getDate();
                          tmp = tmp.toString();
                          if (tmp.length == 1) {
                              moddt += "0" + tmp;
                          } else {
                              moddt += tmp;
                          }
                          break;
                      case "n":
                          tmp = nDate.getDate();
                          moddt += tmp.toString();
                          break;
          
                      //Year: Y=2013 y=13
                      case "Y":
                          moddt += nDate.getFullYear();
                          break;
                      case "y":
                          tmp = nDate.getFullYear();
                          tmp = tmp.toString();
                          moddt += tmp.substr(2, 2);
                          break;
          
                      //Hour: H=08 h=8 Military: Z=14 z=01
                      case "H":
                          tmp = nDate.getHours();
                          if (tmp > 12) tmp -= 12;
                          tmp = tmp.toString();
                          if (tmp.length == 1) {
                              moddt += "0" + tmp;
                          } else {
                              moddt += tmp;
                          }
                              break;
                      case "h":
                          tmp = nDate.getHours();
                          if (tmp > 12) tmp -= 12;
                          moddt += tmp.toString();
                          break;
                      case "Z":
                          tmp = nDate.getHours();
                          tmp = tmp.toString();
                          if (tmp.length == 1) {
                              moddt += "0" + tmp;
                          } else {
                              moddt += tmp;
                          }
                          break;
                      case "z":
                          tmp = nDate.getHours();
                          moddt += tmp.toString();
                          break;
          
                      //Minute: f=08
                      case "f":
                          tmp = nDate.getMinutes();
                          tmp = tmp.toString();
                          if (tmp.length == 1) {
                              moddt += "0" + tmp;
                          } else {
                              moddt += tmp;
                          }
                          break;
          
                      //Seconds: s=08
                      case "s":
                          tmp = nDate.getSeconds();
                          tmp = tmp.toString();
                          if (tmp.length == 1) {
                              moddt += "0" + tmp;
                          } else {
                              moddt += tmp;
                          }
                          break;
          
                      //AM/PM: T=AM/PM t=am/pm q=a/p
                      case "T":
                          if (nDate.getHours() > 11) {
                              moddt += "PM";
                          } else {
                              moddt += "AM";
                          }
                          break;
                      case "t":
                          if (nDate.getHours() > 11) {
                              moddt += "pm";
                          } else {
                              moddt += "am";
                          }
                          break;
                      case "q":
                          if (nDate.getHours() > 11) {
                              moddt += "p";
                          } else {
                              moddt += "a";
                          }
                          break;
                  }       
              }
              return moddt;
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-04-01
            • 1970-01-01
            • 1970-01-01
            • 2017-04-09
            • 2017-03-23
            • 2011-04-08
            • 2020-05-22
            相关资源
            最近更新 更多