Javascript兼容各浏览器的日期转换
Posted 生在新中国,长在红旗下
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript兼容各浏览器的日期转换相关的知识,希望对你有一定的参考价值。
var date = new Date(Date.parse("2015-09-05".replace(/-/g,"/")));
‘2015-09-05‘是无法被各个浏览器中,使用new Date(str)来正确生成日期对象的。 正确的用法是‘2015/09/06‘.
-------------------------------------------------
javascript的日期用法:
var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-????) myDate.getMonth(); //获取当前月份(0-11,0代表1月) myDate.getDate(); //获取当前日(1-31) myDate.getDay(); //获取当前星期X(0-6,0代表星期天) 何问起 hovertree.com myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数) myDate.getHours(); //获取当前小时数(0-23) myDate.getMinutes(); //获取当前分钟数(0-59) myDate.getSeconds(); //获取当前秒数(0-59) myDate.getMilliseconds(); //获取当前毫秒数(0-999) myDate.toLocaleDateString(); //获取当前日期 var mytime=myDate.toLocaleTimeString(); //获取当前时间 myDate.toLocaleString( ); //获取日期与时间
==========================================================================
JS获取当前时间戳的方法-JavaScript 获取当前时间戳
JavaScript 获取当前时间戳:
第一种方法:
var timestamp =Date.parse(new Date());
结果:1280977330000
第二种方法:
var timestamp =(new Date()).valueOf();
结果:1280977330748
第三种方法:
var timestamp=new Date().getTime();
结果:1280977330748
第一种:获取的时间戳是把毫秒改成000显示,
第二种和第三种是获取了当前毫秒的时间戳。
我和同事在用js实现一个显示出分析数据所剩大概时间的过程中,时间总是变给0,结果很怪异,最后发现获取时间的时候用的是Date.parse(newDate())获取的时间戳把毫秒改成了000显示,所以时间差计算的不准确。
可以用第二种或第三种方法计算时间差。http://hovertree.com/menu/javascript/
js中单独调用new Date(),例如document.write(new Date());
显示的结果是:Mar 31 10:10:43 UTC+0800 2012 这种格式的时间
但是用new Date() 参与计算会自动转换为从1970.1.1开始的毫秒数
--------------------------------------------------------------------------------------------------
将字符串形式的日期转换成日期对象
var strTime="2011-04-16"; //字符串日期格式 var date= new Date(Date.parse(strTime.replace(/-/g, "/"))); //转换成Data(); var month=date.getMonth()+1; //获取当前月份
----------------------------------------------------
1 // 获取当前时间戳(以s为单位) 2 var timestamp = Date.parse(new Date()); 3 timestamp = timestamp / 1000; 4 //当前时间戳为:1403149534 5 console.log("当前时间戳为:" + timestamp); 6 7 // 获取某个时间格式的时间戳 8 var stringTime = "2014-07-10 10:21:12"; 9 var timestamp2 = Date.parse(new Date(stringTime)); 10 timestamp2 = timestamp2 / 1000; 11 //2014-07-10 10:21:12的时间戳为:1404958872 12 console.log(stringTime + "的时间戳为:" + timestamp2); 13 14 // 将当前时间换成时间格式字符串 15 var timestamp3 = 1403058804; 16 var newDate = new Date(); 17 newDate.setTime(timestamp3 * 1000); 18 // Wed Jun 18 2014 19 console.log(newDate.toDateString()); 20 // Wed, 18 Jun 2014 02:33:24 GMT 21 console.log(newDate.toGMTString()); 22 // 2014-06-18T02:33:24.000Z 23 console.log(newDate.toISOString()); 24 // 2014-06-18T02:33:24.000Z 25 console.log(newDate.toJSON()); 26 // 2014年6月18日 27 console.log(newDate.toLocaleDateString()); 28 // 2014年6月18日 上午10:33:24 29 console.log(newDate.toLocaleString()); 30 // 上午10:33:24 31 console.log(newDate.toLocaleTimeString()); 32 // Wed Jun 18 2014 10:33:24 GMT+0800 (中国标准时间) 33 console.log(newDate.toString()); 34 // 10:33:24 GMT+0800 (中国标准时间) 35 console.log(newDate.toTimeString()); 36 // Wed, 18 Jun 2014 02:33:24 GMT 37 console.log(newDate.toUTCString()); 38 39 Date.prototype.format = function(format) { 40 var date = { 41 "M+": this.getMonth() + 1, 42 "d+": this.getDate(), 43 "h+": this.getHours(), 44 "m+": this.getMinutes(), 45 "s+": this.getSeconds(), 46 "q+": Math.floor((this.getMonth() + 3) / 3), 47 "S+": this.getMilliseconds() 48 }; 49 if (/(y+)/i.test(format)) { 50 format = format.replace(RegExp.$1, (this.getFullYear() + ‘‘).substr(4 - RegExp.$1.length)); 51 } 52 for (var k in date) { 53 if (new RegExp("(" + k + ")").test(format)) { 54 format = format.replace(RegExp.$1, RegExp.$1.length == 1 55 ? date[k] : ("00" + date[k]).substr(("" + date[k]).length)); 56 } 57 } 58 return format; 59 } 60 console.log(newDate.format(‘yyyy-MM-dd h:m:s‘));
以上是关于Javascript兼容各浏览器的日期转换的主要内容,如果未能解决你的问题,请参考以下文章
javascript中new Date()的浏览器兼容性问题