JavaScript字符串与日期互转及格式化实现

作者:键盘侠

时间:2026-10-29

浏览:404

本文介绍JavaScript中字符串与日期对象的相互转换方法,以及利用正则表达式对日期字符串进行格式化的技巧。通过具体代码示例,展示了如何将包含年月日时分秒的字符串解析为Date对象,以及如何将日期对象格式化为指定格式的字符串,包括使用正则替换实现日期的标准化输出。

文章目录

字符串与日期转换概述

在JavaScript开发中,经常需要进行字符串与日期对象之间的相互转换,以及对日期进行特定格式的格式化输出。

基础转换与格式化函数


// 2014-02-25 
 
/** 
   * 字符串转时间(yyyy-MM-dd HH:mm:ss) 
   * result (分钟) 
   */  
  stringToDate : function(fDate){  
    var fullDate = fDate.split("-");  
    
    return new Date(fullDate[0], fullDate[1]-1, fullDate[2], 0, 0, 0);  
  } 
 
 
/** 
     * 格式化日期 
     * @param date 日期 
     * @param format 格式化样式,例如yyyy-MM-dd HH:mm:ss E 
     * @return 格式化后的金额 
     */ 
    formatDate : function (date, format) { 
      var v = ""; 
      if (typeof date == "string" || typeof date != "object") { 
        return; 
      } 
      var year  = date.getFullYear(); 
      var month  = date.getMonth()+1; 
      var day   = date.getDate(); 
      var hour  = date.getHours(); 
      var minute = date.getMinutes(); 
      var second = date.getSeconds(); 
      var weekDay = date.getDay(); 
      var ms   = date.getMilliseconds(); 
      var weekDayString = ""; 
       
      if (weekDay == 1) { 
        weekDayString = "星期一"; 
      } else if (weekDay == 2) { 
        weekDayString = "星期二"; 
      } else if (weekDay == 3) { 
        weekDayString = "星期三"; 
      } else if (weekDay == 4) { 
        weekDayString = "星期四"; 
      } else if (weekDay == 5) { 
        weekDayString = "星期五"; 
      } else if (weekDay == 6) { 
        weekDayString = "星期六"; 
      } else if (weekDay == 7) { 
        weekDayString = "星期日"; 
      } 
 
      v = format; 
      //Year 
      v = v.replace(/yyyy/g, year); 
      v = v.replace(/YYYY/g, year); 
      v = v.replace(/yy/g, (year+"").substring(2,4)); 
      v = v.replace(/YY/g, (year+"").substring(2,4)); 
 
      //Month 
      var monthStr = ("0"+month); 
      v = v.replace(/MM/g, monthStr.substring(monthStr.length-2)); 
 
      //Day 
      var dayStr = ("0"+day); 
      v = v.replace(/dd/g, dayStr.substring(dayStr.length-2)); 
 
      //hour 
      var hourStr = ("0"+hour); 
      v = v.replace(/HH/g, hourStr.substring(hourStr.length-2)); 
      v = v.replace(/hh/g, hourStr.substring(hourStr.length-2)); 
 
      //minute 
      var minuteStr = ("0"+minute); 
      v = v.replace(/mm/g, minuteStr.substring(minuteStr.length-2)); 
 
      //Millisecond 
      v = v.replace(/sss/g, ms); 
      v = v.replace(/SSS/g, ms); 
       
      //second 
      var secondStr = ("0"+second); 
      v = v.replace(/ss/g, secondStr.substring(secondStr.length-2)); 
      v = v.replace(/SS/g, secondStr.substring(secondStr.length-2)); 
       
      //weekDay 
      v = v.replace(/E/g, weekDayString); 
      return v; 
    } 
 

// dateValue=2014-02-28 
var cDate = _STAGE.stringToDate(dateValue); 
cDate.setDate(cDate.getDate()+1); 
currentDate = jAnXin.util.formatDate(cDate, "yyyy-MM-dd"); 
 
console.log(currentDate ); // 2014-03-01 

基于正则的日期格式化方法

实现这一功能的核心在于利用正则表达式替换日期中的非数字字符,并重新组合成目标格式。

首先尝试将日期字符串转换为纯数字形式,以便后续处理。

提取纯数字日期


ar ttDate = "2013年12月20日 14:20:20"; 
ttDate = ttDate.replace(/[^0-9]/mg, '').match(/.{8}/); 
alert(ttDate);

经过处理后,得到的结果字符串仅包含数字部分。


20131220 

接下来,将处理后的字符串转换为标准的日期对象类型。

格式化为标准日期字符串


var ttDate = "2013年12月20日 14:20:20";  
ttDate = ttDate.match(/\d{4}.\d{1,2}.\d{1,2}/mg).toString();  
ttDate = ttDate.replace(/[^0-9]/mg, '-');  
alert(ttDate); 

转换后的日期对象可以用于进一步的日期计算或展示。


2013-12-20 

使用更复杂的正则表达式进行替换,可以直接将原始日期字符串转换为标准的yyyy-MM-dd格式。

超级正则替换技巧


var ttDate = "2013年12月20日 14:20:20";  

ttDate = ttDate.replace(/(\d{4}).(\d{1,2}).(\d{1,2}).+/mg, '$1-$2-$3'); 
alert(ttDate); 

最终输出的结果符合标准的日期格式要求。


2013-12-20 

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章