[关闭]
@lesonky 2017-01-12T06:28:14.000000Z 字数 2363 阅读 732

JavaScript时间格式化方法

JavaScript

时间格式化方法,记录一下,以便以后复制粘帖

  1. //工具方法,时间格式化
  2. function formateDate(timeStamp) {
  3. timeStamp = timeStamp || (new Date()).getTime();
  4. var now = new Date(timeStamp);
  5. var year = now.getYear() + 1900;;
  6. var month = now.getMonth() + 1;
  7. var date = now.getDate();
  8. var hour = now.getHours();
  9. var minute = now.getMinutes();
  10. var seconds = now.getSeconds();
  11. return year + "-" + formateNumber(month) + "-" + formateNumber(date) + " " +
  12. formateNumber(hour) + ":" + formateNumber(minute) + ":" + formateNumber(seconds);
  13. }
  14. //工具方法,给一位数字前补个0
  15. function formateNumber(num) {
  16. num = num + "";
  17. return num.replace(/^(\d)$/, "0$1");
  18. }

扩展Date提供dateFormatter方法(从网上找来的,作者已不可考)

  1. // 对Date的扩展,将 Date 转化为指定格式的String
  2. // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
  3. // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
  4. // 例子:
  5. // (new Date()).format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
  6. // (new Date()).format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
  7. Date.prototype.format = function (fmt) { //author: meizz
  8. var o = {
  9. "M+": this.getMonth() + 1, //月份
  10. "d+": this.getDate(), //日
  11. "h+": this.getHours(), //小时
  12. "m+": this.getMinutes(), //分
  13. "s+": this.getSeconds(), //秒
  14. "q+": Math.floor((this.getMonth() + 3) / 3), //季度
  15. "S": this.getMilliseconds() //毫秒
  16. };
  17. if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  18. for (var k in o)
  19. if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  20. return fmt;
  21. }

字符串格式化成时间,自己写的,还有点不完善,但是大部分功能已经符合要求

  1. /**
  2. * 根据formatter字符串转换时间字符串
  3. * 月(M)、日(d)、小时(h)、分(m)、秒(s) 占位符个数需要和时间字符串匹配
  4. * @param {string} dateStr 时间字符串 如:"2015-11-12"
  5. * @param {string} fmt 格式化字符串 如:"yyyy-MM-dd"
  6. * @return {Date} 标准时间
  7. * author: shaojiasong 2015-12-29
  8. */
  9. function parseDate(dateStr,fmt){
  10. if(!dateStr || !fmt || (dateStr.length != fmt.length)) {
  11. throw new Error("转换时间时发生错误,时间字符串与格式字符串不匹配!");
  12. }
  13. //排除特殊字符,这些字符很有可能做分隔符
  14. fmt = fmt.replace(/([\^\$\.\*\+\?\=\!\:\|\\\/\(\)\[\]\{\}])/ig,"\\$1");
  15. function getReg(str){
  16. var cfmt = fmt;
  17. cfmt = cfmt.replace(new RegExp(str+"+","g"),function(full){ return "("+full+")";}) || "";
  18. return cfmt.replace(/[yMdhmsS]/g,"\\d");
  19. }
  20. var year = parseInt((new RegExp(getReg("y")).exec(dateStr)[1])) || 0;
  21. var month = parseInt((new RegExp(getReg("M")).exec(dateStr)[1])) - 1 || 0;
  22. var day = parseInt((new RegExp(getReg("d")).exec(dateStr)[1])) || 0;
  23. var hour = parseInt((new RegExp(getReg("h")).exec(dateStr)[1])) || 0;
  24. var minute = parseInt((new RegExp(getReg("m")).exec(dateStr)[1])) || 0;
  25. var second = parseInt((new RegExp(getReg("s")).exec(dateStr)[1])) || 0;
  26. return new Date(year,month,day,hour,minute,second);
  27. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注