JS日期格式的转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS日期格式的转换相关的知识,希望对你有一定的参考价值。

/Date(1314005630000+0800)/ 大家看看,如何转换这个日期的格式

1. 将日期转换为指定的格式:比如转换成 年月日时分秒 这种格式:yyyy-MM-dd hh:mm:ss 或者 yyyy-MM-dd。当然是网上的方法,只是总结下。

可以为Date原型添加如下的方法:

Date.prototype.format = function(fmt)
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");
console.log(time1);
参考技术A <script>
var myDate = new Date(1314005630000+0800);
document.write(myDate);
</script>追问

那个+号也要放进去么

追答

+号表示东区,Date类是以格林尼治时间为基础的,+8就是东8区,表示北京时间

追问

Invalid Date 显示出来的是这样的啊

追答

你用的什么浏览器?
chrome:Mon Aug 22 2011 17:33:50 GMT+0800 (中国标准时间)
IE8:Mon Aug 22 17:33:50 UTC+0800 2011
FIREFOX6:Mon Aug 22 2011 17:33:50 GMT+0800
Opera11:Mon Aug 22 2011 17:33:50 GMT+0800
Safari5.1:Mon Aug 22 2011 17:33:50 GMT+0800 (ÖD1ú±ê׼걼ä)
除了safari有个编码错误的乱码问题外其他浏览器均正常,不知道你用的什么浏览器无法计算出时间。

本回答被提问者采纳

js中转换Date日期格式

在javascript中直接输出Date得到的结果是这样的:

function date(){

    var date = new Date();

    alert(date);

}

结果是:Mon Jun 15 15:30:46 UTC+0800 2009

这可能不是我们所需要的,因此是需要转换下的,这里就学下我转换的几种方法,不妥之处请指教:

 

1、得到new Date()型中各个时间级别(年、月、日、时、分、秒)的数:

function date(){

     var date = new Date();

 

     var year = date.getFullYear();
     var month = date.getMonth()+1;    //js从0开始取 
     var date1 = date.getDate(); 
     var hour = date.getHours(); 
     var minutes = date.getMinutes(); 
     var second = date.getSeconds();

 

     alert(date+"  |  "+year+"年"+month+"月"+date1+"日"+hour+"时"+minutes +"分"+second+"秒" );

}

得到的结果就是:Mon Jun 15 15:44:50 UTC+0800 2009 | 2009年6月15日15时44分50秒

 

注意:date.getMonth()得到的月是从0开始的,date所有的get方法除了date.getFullYear()得到的是2009外,其余的get方法得到的数若小于10,都是以单数出现,如6月,date.getMonth()+1 = 6 若要得到两位的自己加上0就可以了,如下面的转换方法。

 

以下是转换成另两种格式的,和上面是大同小异的:

(1)

//将date型转换为tring 

//传来的datetime是:Wed Mar 04 2009 11:05:05 GMT+0800格式  得到结果:2009-06-12 17:18:05

function dateToStr(datetime){ 

 var year = datetime.getFullYear();
 var month = datetime.getMonth()+1;//js从0开始取 
 var date = datetime.getDate(); 
 var hour = datetime.getHours(); 
 var minutes = datetime.getMinutes(); 
 var second = datetime.getSeconds();
 
 if(month<10){
  month = "0" + month;
 }
 if(date<10){
  date = "0" + date;
 }
 if(hour <10){
  hour = "0" + hour;
 }
 if(minutes <10){
  minutes = "0" + minutes;
 }
 if(second <10){
  second = "0" + second ;
 }
 
 var time = year+"-"+month+"-"+date+" "+hour+":"+minutes+":"+second; //2009-06-12 17:18:05
// alert(time);
 return time;
}

 

 

 

(2)

//将date型转换为tring 

//传来的datetime是:Wed Mar 04 2009 11:05:05 GMT+0800格式 得到结果:09年06月12日 17时18分

function dateToComm(datetime){    

 var year = datetime.getFullYear();
 var month = datetime.getMonth()+1;//js从0开始取 
 var date = datetime.getDate(); 
 var hour = datetime.getHours(); 
 var minutes = datetime.getMinutes(); 
 var second = datetime.getSeconds();
 
 if(month<10){
  month = "0" + month;
 }
 if(date<10){
  date = "0" + date;
 }
 if(hour <10){
  hour = "0" + hour;
 }
 if(minutes <10){
  minutes = "0" + minutes;
 }
 if(second <10){
  second = "0" + second ;
 }
 
 year = year.toString();
 year = year.substring(2);
 var time1 = year+"年"+month+"月"+date+"日";
 var time2 = hour+"时"+minutes+"分";//09年06月12日 17时18分
 var time={time1:time1,time2:time2}    //json格式
// alert(time);
 return time; 
}

 

 

2、实际应用中经常会遇到加减时间的情况,如:昨天这个时间到今天这个时间间系统共登陆了几次之类的。因此在我们取得当前时间之后就要减去一天或几天。

在此我们现将得到的时间转换下:

function date(){

   var date = new Date();

   var dateNum date.getTime();

   alert(dateNum);

}

得到的是:2592000000     这个是距 1970 年 1 月 1 日之间的毫秒数。

注:getTime() 方法可返回距 1970 年 1 月 1 日之间的毫秒数。

 

我们以一天为例,得到一天前的此时:

function date(){

   var date = new Date();

   var oneDate = 1

   var dateMid = date.getTime() - (oneDate * 24 * 60 * 60 * 1000)

   var dateBefore = new Date(dateMid);

   alert(dateBefore);

}

若date 为:Mon Jun 15 15:44:50 UTC+0800 2009  

则输出:Mon Jun 14 15:44:50 UTC+0800 2009  

要转换为Sreing型  按照上面1的方法转换就可以了。

 

那如何用js格式化date日期值呢?

1.js方法返回值:2015-03-19

  1. var formatDate = function (date) {  
  2.     var y = date.getFullYear();  
  3.     var m = date.getMonth() + 1;  
  4.     m = m < 10 ? ‘0‘ + m : m;  
  5.     var d = date.getDate();  
  6.     d = d < 10 ? (‘0‘ + d) : d;  
  7.     return y + ‘-‘ + m + ‘-‘ + d;  
  8. };  

2.js方法返回值:2015-03-19 12:00

  1. var formatDateTime = function (date) {  
  2.     var y = date.getFullYear();  
  3.     var m = date.getMonth() + 1;  
  4.     m = m < 10 ? (‘0‘ + m) : m;  
  5.     var d = date.getDate();  
  6.     d = d < 10 ? (‘0‘ + d) : d;  
  7.     var h = date.getHours();  
  8.     var minute = date.getMinutes();  
  9.     minute = minute < 10 ? (‘0‘ + minute) : minute;  
  10.     return y + ‘-‘ + m + ‘-‘ + d+‘ ‘+h+‘:‘+minute;  
  11. };  
    调用:formatDate(Date())   formatDate(Date())

如何将2015-03-12 12:00 转换成标准时间()?

Thu Mar 19 2015 12:00:00 GMT+0800 (中国标准时间)

js方法返回值:Thu Mar 19 2015 12:00:00 GMT+0800 (中国标准时

  1. var parserDate = function (date) {  
  2.     var t = Date.parse(date);  
  3.     if (!isNaN(t)) {  
  4.         return new Date(Date.parse(date.replace(/-/g, "/")));  
  5.     } else {  
  6.         return new Date();  
  7.     }  
  8. };  

调用:parserDate("2015-03-19 12::00:00")

以上是关于JS日期格式的转换的主要内容,如果未能解决你的问题,请参考以下文章

js怎么把时间戳转换为日期格式

js怎么把时间戳转换为日期格式

JS中,JSON数组中日期格式转换的问题

vue.js怎样将时间戳转化为日期格式

js时间戳怎么转成日期格式

js时间戳怎么转成日期格式