【问题标题】:Reformatting date string重新格式化日期字符串
【发布时间】:2011-08-30 14:53:14
【问题描述】:

给定像"Tue Aug 30 2011 11:47:14 GMT-0300" 这样的输入,我想要像"MMM DD YYYY hh:mm" 这样的输出。

在 JavaScript 中有什么简单的方法?

【问题讨论】:

  • 您不需要正则表达式来解析日期字符串,只需询问日期对象的年、月、日等。有关更多信息,请参阅this question。另外,请查看Datejs
  • var output = "MMM DD YYYY hh:mm"; *ducks*
  • 如果我从 SharePoint 之类的数据库中获取所述日期,*会在预制的 Fallout 保险库内遇到问题*,其格式为 yyyy-dd-MM HH:mm:ss:SSSS,即这些解决方案中的哪一个效果最好?

标签: javascript regex


【解决方案1】:

通过JS,您可以尝试将其转换为日期对象,然后提取相关位并使用它们:

var d = new Date ("Tue Aug 30 2011 11:47:14 GMT-0300")
d.getMonth(); // gives you 7, so you need to translate that

要缓解它,您可以使用 date-js 之类的库

通过正则表达式

/[a-zA-Z]{3} ([a-zA-Z]{3} \d{2} \d{4} \d{2}:\d{2})/ 应该可以解决问题。

var r = "Tue Aug 30 2011 11:47:14 GMT-0300".match(/^[a-zA-Z]{3} ([a-zA-Z]{3} \d{2} \d{4} \d{2}:\d{2})/);
alert(r[1]);   // gives you Aug 30 2011 11:47

【讨论】:

    【解决方案2】:

    查看Date.parse,它将字符串解析为 UNIX 时间戳,然后您可以根据需要对其进行格式化。

    【讨论】:

      【解决方案3】:

      如果您不介意使用库,请使用Datejs。使用 Datejs,您可以:

      new Date ("Tue Aug 30 2011 11:47:14 GMT-0300").toString('MMM dd yyyy hh:mm');
      

      【讨论】:

        【解决方案4】:

        一个示例函数:

        function parseDate(d) {
            var m_names = new Array("Jan", "Feb", "Mar", 
                            "Apr", "May", "Jun", "Jul", "Aug", "Sep", 
                            "Oct", "Nov", "Dec");
        
            var curr_day = d.getDate();
            var curr_hours = d.getHours();
            var curr_minutes = d.getMinutes();
        
            if (curr_day < 10) {
                curr_day = '0' + curr_day;
            }
            if (curr_hours < 10) {
                curr_hours = '0' + curr_hours;
            }
            if (curr_minutes < 10) {
                curr_minutes = '0' + curr_minutes;
            }
        
            return ( m_names[d.getMonth()] + ' ' + curr_day + ' ' + d.getFullYear() + ' ' + curr_hours + ':' + curr_minutes);
        }
        
        
        alert(parseDate(new Date()));
        

        或者查看http://blog.stevenlevithan.com/archives/date-time-format 以获得更通用的日期格式化功能

        【讨论】:

          猜你喜欢
          • 2015-04-01
          • 1970-01-01
          • 2012-01-07
          • 2016-07-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-29
          相关资源
          最近更新 更多