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的事件描述
Sep 08 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
js 单击式的下拉菜单效果实例
Aug 13 Javascript
JavaScript判断IE版本型号
Jul 27 Javascript
javascript基本语法
May 31 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
Dec 02 Javascript
javascript基础知识讲解
Jan 11 Javascript
angularjs点击图片放大实现上传图片预览
Feb 24 Javascript
Angular实现预加载延迟模块的示例
Oct 12 Javascript
从零开始搭建webpack+react开发环境的详细步骤
May 18 Javascript
原生JS实现手动轮播图效果实例代码
Nov 22 Javascript
微信小程序canvas截取任意形状的实现代码
Jan 13 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实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
angularJS结合canvas画图例子
2015/02/09 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
jQuery表单美化插件jqTransform使用详解
2015/04/12 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
Angularjs的$http异步删除数据详解及实例
2017/07/27 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
泛谈JS逻辑判断选择器 || &amp;&amp;
2019/05/24 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
2020/10/29 Javascript
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
初步解析Python中的yield函数的用法
2015/04/03 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
一个Python最简单的接口自动化框架
2018/01/02 Python
Python模块WSGI使用详解
2018/02/02 Python
Django 使用logging打印日志的实例
2018/04/28 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
MYPROTEIN澳大利亚官方网站:欧洲运动营养品牌
2019/06/26 全球购物
新法人代表任命书
2014/06/06 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
python超详细实现完整学生成绩管理系统
2022/03/17 Python
Java 关于String字符串原理上的问题
2022/04/07 Java/Android
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL