JS 的时间格式

JavaScript019

JS 的时间格式,第1张

一直被各种时间格式困扰,所以这次来总结一下常用的时间格式到底有哪些,它们之间如何互相转换。

ISO Date "2015-03-25" 国际标准

Short Date"03/25/2015"

Long Date "Mar 25 2015" 或者 "25 Mar 2015"

Full Date "Wednesday March 25 2015"

new Date()方法可以将前四种时间格式当做参数,输出 UTC 格式的时间

UTC "2015-03-25T12:00:00" 看到日期和时间中间有一个字母 T 表示为 UTC 时间 是 现在使用的标准时间

UTC 是时间标准;ISO-8601 是表示时间的一种标准格式

ISO-8601 的具体日期的时间表示法,在 UTC 时间后加 Z,如 "2015-03-25T12:00:00Z",Z 表示是通用标准,其它的时区的时间和 UTC 不同,所以用实际时间加时差表示。

GMT Greenwich Mean Time "Mon Feb 13 08:00:00 GMT+08:00 2012" 中间有 GMT+ 字样

UTC(Universal Time Coordinated 原子钟提供)和 GMT (Greenwich Mean Time 格林尼治时间)一样

EDT (US)Eastern Daylight Time 东部夏令时

CDT (US) Central Daylight Time 中部夏令时

MDT (US)Mountain Daylight Time 山地夏令时

PDT (US) Pacific Daylight Time 太平洋夏令时

EST (US) Eastern Standard Time 东部标准时间

CST"Web Mar 25 2015 08:00:00 GMT+0800" 中部标准时间

MST (US) Mountain Standard Time 山地标准时间

PST (US) Pacific Standard Time 太平洋标准时间

设置时间时,没有指定 time zone,js 将会使用浏览器的 time zone

获取时间时,没有指定 time zone,结果将会转换成浏览器的 time zone

总之,如果时间是用 GMT 时间创建,如果浏览器 from central US 时间将会被转换成 CDT。

涉及到格式类型:UTC,GMT,unix timestamp

自定义日期格式化函数

格式化函数

// 对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")

js将时间戳转为日期格式

推荐一个JavaScript常用函数库 jutils

其中的formatDate(javascript时间戳转换)函数支持自定义格式,可以显示年,月,周,日,时,分,秒多种形式的日期和时间。

例:

输出格式为 =>年、月、日、时、分、秒

var date = jutils.formatDate(new Date(1533686888*1000),"YYYY-MM-DD HH:ii:ss")

console.log(date)

// 2019-07-09 19:44:01

更多自定义返回格式可以参照:

一行js代码实现时间戳转时间格式

下面是相关源码的截图

js将时间戳转为日期格式