javascript兼容各浏览器的日期转换 及倒计时

var date=new Date(Date.parese("2017-01-12".replace(/-/g/,"/")));

2017-01-12是无法被各个浏览器中,使用 new Date(str) 来正确生成日期对象的。正确的格式是“2017/01/12”。(如IE不兼容)

-------------------------------------------------------------------------------

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 function djsTime(startTime) {
 2     var currentDate = new Date();
 3     var days = startTime - currentDate;
 4     EndTimeMsg = parseInt(days / 1000);//精确到秒
 5     d = Math.floor(EndTimeMsg / 60 / 60 / 24);
 6     d_left = EndTimeMsg - (d * 60 * 60 * 24);
 7     h = Math.floor(d_left / 60 / 60);
 8     h_left = d_left - (h * 60 * 60);
 9     m = Math.floor(h_left / 60);
10     s = h_left - m * 60;
11     // s = Math.floor((EndTimeMsg - h * 60 * 60 - m * 60));
12     document.getElementById("DD").innerHTML = d;
13     document.getElementById("HH").innerHTML = h < 10 ? ('0' + h) : h;
14     document.getElementById("MM").innerHTML = m < 10 ? ('0' + m) : m;
15     document.getElementById("SS").innerHTML = s < 10 ? ('0' + s) : s;
16     EndTimeMsg--;
17     if (EndTimeMsg < 0) {
18         document.getElementById("DD").innerHTML = "0";
19         document.getElementById("HH").innerHTML = "00";
20         document.getElementById("MM").innerHTML = "00";
21         document.getElementById("SS").innerHTML = "00";
22     }
23     setTimeout(function () {
24         if (startTime <= new Date())
25             location.reload();
26         djsTime(startTime);
27     }, 1000);
28 }

 时间转几天前几小时前

utils.formatMsgTime =function(timespan) {

        var dateTime = new Date(timespan);

        var year = dateTime.getFullYear();
        var month = dateTime.getMonth() + 1;
        var day = dateTime.getDate();
        var hour = dateTime.getHours();
        var minute = dateTime.getMinutes();
        var second = dateTime.getSeconds();
        var now = new Date();
        //var now_new = Date.parse(now.toDateString());  //typescript转换写法
        var now_new=new Date().getTime();
        var milliseconds = 0;
        var timeSpanStr;

        milliseconds = now_new - timespan;

        if (milliseconds <= 1000 * 60 * 1) {
            timeSpanStr = '刚刚';
        }
        else if (1000 * 60 * 1 < milliseconds && milliseconds <= 1000 * 60 * 60) {
            timeSpanStr = Math.round((milliseconds / (1000 * 60))) + '分钟前';
        }
        else if (1000 * 60 * 60 * 1 < milliseconds && milliseconds <= 1000 * 60 * 60 * 24) {
            timeSpanStr = Math.round(milliseconds / (1000 * 60 * 60)) + '小时前';
        }
        else if (1000 * 60 * 60 * 24 < milliseconds && milliseconds <= 1000 * 60 * 60 * 24 * 15) {
            timeSpanStr = Math.round(milliseconds / (1000 * 60 * 60 * 24)) + '天前';
        }
        else if (milliseconds > 1000 * 60 * 60 * 24 * 15 && year == now.getFullYear()) {
            timeSpanStr = month + '-' + day + ' ' + hour + ':' + minute;
        } else {
            timeSpanStr = year + '-' + month + '-' + day + ' ' + hour + ':' + minute;
        }
        return timeSpanStr;
    };
原文地址:https://www.cnblogs.com/guanguan-/p/7656260.html