js格式化时间的方法


Posted in Javascript onDecember 18, 2015

本文为大家分享了javascript时间格式化的方法,分享给大家供大家参考,具体内容如下
可以说是Web项目中不可或缺的一个Javascript类库,它可以帮助你快速的解决客户端编程的许多问题,下面贴出一个用js格式化时间的方法。

Date.prototype.format =function(format)
{
var o = {
"M+" : this.getMonth()+1, //month
"d+" : this.getDate(), //day
"h+" : this.getHours(), //hour
"m+" : this.getMinutes(), //minute
"s+" : this.getSeconds(), //second
"q+" : Math.floor((this.getMonth()+3)/3), //quarter
"S" : this.getMilliseconds() //millisecond
}
if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
(this.getFullYear()+"").substr(4- RegExp.$1.length));
for(var k in o)if(new RegExp("("+ k +")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length==1? o[k] :
("00"+ o[k]).substr((""+ o[k]).length));
return format;
}

以上代码必须先声明,然后在使用。使用方法:

var d =new Date().format('yyyy-MM-dd');

另一种方法:

在Javascript之中,日期对象是Date,那么如何将一个日期对象按照定制的格式进行输出呢?
  可以现告诉你,Date对象有有四个内置方法,用于输出为字符串格式,分别为: 

  •   1)toGMTString,将一个日期按照GMT格式显示
  •   2)toLocaleString,将一个日期按照本地操作系统格式显示
  •   3)toLocaleDateString,按照本地格式显示一个日期对象的日期部分
  •   4)toLocaleTimeString,按照本地格式显示一个日期对象的时间部分 

  尽管Javascript的Date对象中内置提供了这些输出为字符串的方法,但是这些字符串不是我们来控制格式的,因此如果我们需要我们自己定制的特殊格式,那么又该怎么办呢?
  不用着急,JsJava中提供了专用的类,专门对日期进行指定格式的字符串输出,你可以下载JsJava-2.0.zip,引入其中的src/jsjava/text/DateFormat.js,或者直接引入jslib/jsjava-2.0.js,样例代码如下:

var df=new SimpleDateFormat();//jsJava1.0需要使用DateFormat对象,不要弄错就是了 
df.applyPattern("yyyy-MM-dd HH:mm:ss"); 
var date=new Date(2015,12,18,10,59,51); 
var str=df.format(date); 
document.write(str);//显示结果为:2015-12-18 10:59:51

通过上面的例子你可以看出,你需要做的就是指定pattern,那么pattern中yyyy、MM等都表示什么意思呢?如果你学习过Java的日期格式化,那么你应该知道,那都是占位符,这些占位符都具有特殊的函数,例如y表示年,yyyy表示四个数字的年份,例如1982,下面列举一些pattern中支持的特殊字符及其含义(下面表格引自Java的官方文档,做了适当修改):

G Era designator [url=]Text[/url] AD 
y Year [url=]Year[/url] 1996; 96 
M Month in year [url=]Month[/url] July; Jul; 07 
w Week in year [url=]Number[/url] 27 
W Week in month [url=]Number[/url] 2 
D Day in year [url=]Number[/url] 189 
d Day in month [url=]Number[/url] 10 
F Day of week in month [url=]Number[/url] 2 
E Day in week [url=]Text[/url] Tuesday; Tue 
a Am/pm marker [url=]Text[/url] PM 
H Hour in day (0-23) [url=]Number[/url] 0 
k Hour in day (1-24) [url=]Number[/url] 24 
K Hour in am/pm (0-11) [url=]Number[/url] 0 
h Hour in am/pm (1-12) [url=]Number[/url] 12 
m Minute in hour [url=]Number[/url] 30 
s Second in minute [url=]Number[/url] 55 
S Millisecond [url=]Number[/url] 978

还有三种方法也分享给大家:

第一种方法:

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

调用方法:

var time1 = new Date().format("yyyy-MM-dd HH:mm:ss");    
var time2 = new Date().format("yyyy-MM-dd");

第二种方法:

<mce:script language="javascript" type="text/javascript"><!--
   
/**   
 * 对Date的扩展,将 Date 转化为指定格式的String   
 * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符   
 * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)   
 * eg:   
 * (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423   
 * (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04   
 * (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04   
 * (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04   
 * (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18   
 */    
Date.prototype.pattern=function(fmt) {     
  var o = {     
  "M+" : this.getMonth()+1, //月份     
  "d+" : this.getDate(), //日     
  "h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时     
  "H+" : this.getHours(), //小时     
  "m+" : this.getMinutes(), //分     
  "s+" : this.getSeconds(), //秒     
  "q+" : Math.floor((this.getMonth()+3)/3), //季度     
  "S" : this.getMilliseconds() //毫秒     
  };     
  var week = {     
  "0" : "/u65e5",     
  "1" : "/u4e00",     
  "2" : "/u4e8c",     
  "3" : "/u4e09",     
  "4" : "/u56db",     
  "5" : "/u4e94",     
  "6" : "/u516d"    
  };     
  if(/(y+)/.test(fmt)){     
    fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));     
  }     
  if(/(E+)/.test(fmt)){     
    fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "/u661f/u671f" : "/u5468") : "")+week[this.getDay()+""]);     
  }     
  for(var k in o){     
    if(new RegExp("("+ k +")").test(fmt)){     
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));     
    }     
  }     
  return fmt;     
}    
   
var date = new Date();   
window.alert(date.pattern("yyyy-MM-dd hh:mm:ss"));
// --></mce:script>

 第三种方法:

Date.prototype.format = function(mask) {   
   
  var d = this;   
   
  var zeroize = function (value, length) {   
   
    if (!length) length = 2;   
   
    value = String(value);   
   
    for (var i = 0, zeros = ''; i < (length - value.length); i++) {   
   
      zeros += '0';   
   
    }   
   
    return zeros + value;   
   
  };    
   
  return mask.replace(/"[^"]*"|'[^']*'|/b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])/1?|[lLZ])/b/g, function($0) {   
   
    switch($0) {   
   
      case 'd':  return d.getDate();   
   
      case 'dd': return zeroize(d.getDate());   
   
      case 'ddd': return ['Sun','Mon','Tue','Wed','Thr','Fri','Sat'][d.getDay()];   
   
      case 'dddd':  return ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][d.getDay()];   
   
      case 'M':  return d.getMonth() + 1;   
   
      case 'MM': return zeroize(d.getMonth() + 1);   
   
      case 'MMM': return ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'][d.getMonth()];   
   
      case 'MMMM':  return ['January','February','March','April','May','June','July','August','September','October','November','December'][d.getMonth()];   
   
      case 'yy': return String(d.getFullYear()).substr(2);   
   
      case 'yyyy':  return d.getFullYear();   
   
      case 'h':  return d.getHours() % 12 || 12;   
   
      case 'hh': return zeroize(d.getHours() % 12 || 12);   
   
      case 'H':  return d.getHours();   
   
      case 'HH': return zeroize(d.getHours());   
   
      case 'm':  return d.getMinutes();   
   
      case 'mm': return zeroize(d.getMinutes());   
   
      case 's':  return d.getSeconds();   
   
      case 'ss': return zeroize(d.getSeconds());   
   
      case 'l':  return zeroize(d.getMilliseconds(), 3);   
   
      case 'L':  var m = d.getMilliseconds();   
   
          if (m > 99) m = Math.round(m / 10);   
   
          return zeroize(m);   
   
      case 'tt': return d.getHours() < 12 ? 'am' : 'pm';   
   
      case 'TT': return d.getHours() < 12 ? 'AM' : 'PM';   
   
      case 'Z':  return d.toUTCString().match(/[A-Z]+$/);   
   
      // Return quoted strings with the surrounding quotes removed   
   
      default:  return $0.substr(1, $0.length - 2);   
   
    }   
   
  });   
   
};

方法一多了,就不知道如何选择了,不过还是要靠大家仔细学习研究,针对不同问题选择解决方法,希望大家喜欢这篇文章。

Javascript 相关文章推荐
JavaScript 原型链学习总结
Oct 29 Javascript
JavaScript Serializer序列化时间处理示例
Jul 31 Javascript
jQuery自定义添加&quot;$&quot;与解决&quot;$&quot;冲突的方法
Jan 19 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
Oct 19 Javascript
AngularJs $parse、$eval和$observe、$watch详解
Sep 21 Javascript
vue2.0开发实践总结之疑难篇
Dec 07 Javascript
Vue项目中引入外部文件的方法(css、js、less)
Jul 24 Javascript
node.js中fs文件系统目录操作与文件信息操作
Feb 24 Javascript
Three.js实现简单3D房间布局
Dec 30 Javascript
详解JavaScript 浮点数运算的精度问题
Jul 23 Javascript
JavaScript 替换所有匹配内容及正则替换方法
Feb 12 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
Dec 07 Javascript
谈谈我对JavaScript DOM事件的理解
Dec 18 #Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
Dec 18 #Javascript
jQuery Validation PlugIn的使用方法详解
Dec 18 #Javascript
最简单的JavaScript图片轮播代码(两种方法)
Dec 18 #Javascript
JS弹出对话框实现方法(三种方式)
Dec 18 #Javascript
jQuery Validate表单验证深入学习
Dec 18 #Javascript
JavaScript计划任务后台运行的方法
Dec 18 #Javascript
You might like
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
php cookie 详解使用实例
2016/11/03 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
JavaScript 数组循环引起的思考
2010/01/01 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
javascript this详细介绍
2016/09/19 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
vue 中动态绑定class 和 style的方法代码详解
2018/06/01 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
python3 字符串知识点学习笔记
2020/02/08 Python
Python如何在windows环境安装pip及rarfile
2020/06/15 Python
Django缓存Cache使用详解
2020/11/30 Python
《巨人的花园》教学反思
2014/02/12 职场文书
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
企业道德讲堂实施方案
2014/03/19 职场文书
在职员工证明书
2014/09/19 职场文书
四风之害观后感
2015/06/09 职场文书
女性健康讲座主持词
2015/07/04 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android