JavaScript计算日期时间的方法

由于博客全部改版为PJAX(pushState + ajax)。因此,类似于作品等列表都是使用接口读的,后台返回的时间是一个MySQL时间戳,并不能直接使用,需要格式化成指定的字符串。以前这些都是后台搞完返回,现在需要在前端去实现,总结了下博客改版过程中使用到的关于日期时间的方法,主要有parseTime格式化和timeAgo多久之前两个方法。前者就是我们常见到的类似于2015-12-30 12:00、12月20日这种,后者则是类似于2天前,3周前这种,都是比较常用的。

parseTime()

/**
 * 格式化日期
 * @param timestamp 数据库时间戳
 * @param format  如 y-m-d h:i:s
 * @param full  是否补零  5 => 05
 * @returns {string}
 */
function parseTime(timestamp,format,full){
    full = full != undefined ? full : true;
    timestamp = timestamp * 1000;
    if(!format) format = "y-m-d h:i:s";
    format = format.toLowerCase();
    function zeroFull(str){
        return full ? (str >= 10 ? str : ('0' + str)) : str;
    }
    var time = new Date(timestamp),
        o = {
            y : time.getFullYear(),
            m : zeroFull(time.getMonth() + 1),
            d : zeroFull(time.getDate()),
            h : zeroFull(time.getHours()),
            i : zeroFull(time.getMinutes()),
            s : zeroFull(time.getSeconds())
       };
    return format.replace(/([a-z])(\1)*/ig,function(m){
        return o[m];
    });
}
console.log(parseTime(1451460186,"y年m月d日 h:i"));
//2015年12月30日 15:23
console.log(parseTime(1451460186,"y-m-d h:i"));
//2015-12-30 15:23
console.log(parseTime(1451460186,"m-d h:i"));
//12-30 15:23
console.log(parseTime(1451460186,"h:i"));
//15:23 1

timeAgo()

/**
 * 多久之前
 * @param stamp 数据库时间戳
 * @param format 对于不在范围的日期格式化 如 y-m-d h:i:s
 * @param max 最大级别 默认 月
 * @returns {string}
 */
function timeAgo(stamp,format,max) {
    max = max ? parseInt(max) : 2592000;
    var now = (new Date() * 1) / 1000,
       time = now - stamp,
       text = {
        31536000 : "年",
        2592000  : "个月",
        604800   : "周",
        86400    : "天",
        3600     : "小时",
        60       : "分钟",
        1        : "秒"
    };
    var back = "";
    if(time <= max){
        for(var k in text){
            var c = Math.floor(time / parseInt(k));
            if( 0 != c ){
                if(text[k] == "天" && c <= 2){
                    back =  (((c == 1) ? "昨天" : "前天") + parseTime(stamp,"h:i"));
                }else{
                    back = (c + text[k] + "前");
                }
            }
        }
    }else{
        back = parseTime(stamp,format);
    }
    return back;
}
console.log(timeAgo(1451460186,"m-d h:i"));
//3小时前

时间: 2024-10-24 08:24:38

JavaScript计算日期时间的方法的相关文章

JavaScript格式化日期时间的方法和自定义格式化函数示例

 JavaScript默认的时间格式我们一般情况下不会用,所以需要进行格式化,下面说说我总结的JavaScript时间格式化方法 很多时候,我们可以利用JavaScript中Date对象的内置方法来格式化,如:   代码如下:var d = new Date(); console.log(d); // 输出:Mon Nov 04 2013 21:50:33 GMT+0800 (中国标准时间) console.log(d.toDateString()); // 日期字符串,输出:Mon Nov 0

JavaScript格式化日期时间的方法和自定义格式化函数示例_javascript技巧

很多时候,我们可以利用JavaScript中Date对象的内置方法来格式化,如: 复制代码 代码如下: var d = new Date();console.log(d); // 输出:Mon Nov 04 2013 21:50:33 GMT+0800 (中国标准时间)console.log(d.toDateString()); // 日期字符串,输出:Mon Nov 04 2013console.log(d.toGMTString()); // 格林威治时间,输出:Mon, 04 Nov 20

javascript格式化日期时间方法汇总

  本文给大家汇总介绍了javascript格式化日期时间的五种常用方法,个人对第五种个性化输出时间比较有兴趣,基本上只要项目中能用到都是使用第五种,推荐给小伙伴们. 示例一: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&

js获得当前系统日期时间的方法

  这篇文章主要介绍了js获得当前系统日期时间的方法,涉及javascript操作日期时间的相关技巧,非常简单实用,需要的朋友可以参考下 本文实例讲述了js获得当前系统日期时间的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTM

JavaScript获取服务器时间的方法详解_javascript技巧

本文实例讲述了JavaScript获取服务器时间的方法.分享给大家供大家参考,具体如下: Javascript是运行在客户端的脚本,我们一般都用new Date()来获取当前时间,但是得到的是客户端的时间,客户端时间是随意更改的,如果要做一个产品发布倒计时的话,客户端时间一改,就要闹笑话了.业务中需要用到服务器时间的场景还有很多,那么仅仅通过js怎么拿到服务器时间呢?事实上,只需要一个ajax请求就搞定,通过读取XMLHttpRequest对象的响应头里面的时间戳得到当前服务器时间! 原理就是这

JavaScript获取服务器端时间的方法_javascript技巧

用js做时间校正,获取本机时间,是存在bug的. 使用js也可获取到服务器时间,原理是使用 ajax请求,返回的头部信息就含有服务器端的时间信息,获取到就可以了.以下: 1.依赖jQuery 代码: function getServerDate(){ return new Date($.ajax({async: false}).getResponseHeader("Date")); } 以上函数返回的就是一个Date对象,注意在使用ajax时必须同步,要不然无法返回时间日期. 无需填写

javascript求日期差的方法_javascript技巧

本文实例讲述了javascript求日期差的方法.分享给大家供大家参考,具体如下: <script type="text/javascript"> function daytonow(year, month, date){ //思路就是转换两个日期为时间戳即毫秒数,再除以每一天的毫秒数得出相隔多少天 //JS中的month是从0开始,所以month要减一 month--; //过去的日子 var tdate = new Date(year, month, date).get

js获得当前系统日期时间的方法_javascript技巧

本文实例讲述了js获得当前系统日期时间的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <

python简单实现计算过期时间的方法

  本文实例讲述了python简单实现计算过期时间的方法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 def time_passed(value): now = datetime.now() past = now - value if past.days: return u'%s天前' % past.days mins = past.seconds / 60 if mins < 60: return u'%s分钟前' % mins hours = mins /