zoukankan      html  css  js  c++  java
  • 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;
        };
  • 相关阅读:
    MySql(六)单表查询
    MySql(五)
    MySql(四)
    MySql(三)
    MySql(二)
    2016高管必看的五大互联网营销方法
    昨日股市暴跌熔断 赵薇亏3.3亿赔惨了(如何预测今年股市走向)
    何炅加入阿里音乐预示“互联网+”三大发展走向
    《老炮儿》的江湖道义就是互联网创业的规矩?
    世界互联网大会三大看点 传递什么信号?
  • 原文地址:https://www.cnblogs.com/guanguan-/p/7656260.html
Copyright © 2011-2022 走看看