文档章节

js时间日期友好显示

陈俊凯
 陈俊凯
发布于 2017/08/22 12:45
字数 309
阅读 28
收藏 0
function formatMsgTime(timespan) {
    var dateTime = parseDate(timespan);
    var year = dateTime.getFullYear();
    var month = dateTime.getMonth() + 1;
    var day = dateTime.getDate();
    var hour = dateTime.getHours();
    var minute = dateTime.getMinutes();
    minute = minute < 10 ? "0" + minute : minute
    var second = dateTime.getSeconds();
    var now = new Date();
    var milliseconds = 0;
    var timeSpanStr = "";

    milliseconds = now.getTime() - dateTime.getTime();
    var when = "";
    if (hour < 6) when = "凌晨 "
    else if (hour < 9) when = "早上 "
    else if (hour < 12) when = "上午 "
    else if (hour < 14) when = "中午 "
    else if (hour < 17) when = "下午 "
    else if (hour < 19) when = "傍晚 "
    else if (hour < 22) when = "晚上 "
    else when = "深夜 "
    if (milliseconds <= 1000 * 30 * 1) {
        timeSpanStr = '刚刚';
    } else if (milliseconds <= 1000 * 60 * 1) {
        timeSpanStr = '1分钟内';
    } else if (1000 * 60 * 1 < milliseconds && milliseconds <= 1000 * 60 * 30) {
        timeSpanStr = Math.round((milliseconds / (1000 * 60))) + '分钟前';
    }
    else if (1000 * 60 * 30 < milliseconds && milliseconds <= 1000 * 60 * 60) {
        timeSpanStr = '半小时前';
    }
    else if (1000 * 60 * 60 < milliseconds && milliseconds <= (1000 * 60 * 60 * now.getHours() + 1000 * 60 * now.getMinutes() + 1000 * now.getSeconds() + now.getMilliseconds())) {
        timeSpanStr = "今天" + when + hour + ":" + minute;
    }
    else if (1000 * 60 * 60 * now.getHours() < milliseconds && milliseconds <= 1000 * 60 * 60 * 24) {
        timeSpanStr = '昨天' + when + hour + ":" + minute;
    }
    else if (1000 * 60 * 60 * 24 < milliseconds && milliseconds <= 1000 * 60 * 60 * 24 * 15) {
        var d = Math.round(milliseconds / (1000 * 60 * 60 * 24));
        if (d == 1 || (d == 2 && milliseconds == (1000 * 60 * 60 * now.getHours() + 1000 * 60 * now.getMinutes() + 1000 * now.getSeconds() + now.getMilliseconds()) + 86400000)) {
            timeSpanStr += '昨天'
        } else if (d == 2) {
            timeSpanStr += '前天'
        } else if (d == 3) {
            timeSpanStr += '大前天'
        } else {
            timeSpanStr += Math.round(milliseconds / (1000 * 60 * 60 * 24)) + '天前';
        }
        timeSpanStr += when + hour + ":" + minute
    }
    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;
}
var parseDate = function (dateString) {
    return new Date(Date.parse(dateString.replace(/-/g, "/")));
};

© 著作权归作者所有

陈俊凯
粉丝 5
博文 59
码字总数 33183
作品 0
厦门
私信 提问
加载中

评论(1)

Chason-洪
Chason-洪
受益匪浅
6个强大的JavaScript日期操作插件

我们必须承认,JavaScript内建的Date方法实在是太基础了,远不够我们来处理日期。总有人会开发自己的JavaScript日期操作库,为何在能够使用已经开发并测试好的日期插件时还要再自己造个轮子呢...

彭博
2012/11/27
956
0
6个强大的JavaScript日期操作插件(翻译)

我们必须承认,JavaScript内建的Date方法实在是太基础了,远不够我们来处理日期。总有人会开发自己的JavaScript日期操作库,为何在能够使用已经开发并测试好的日期插件时还要再自己造个轮子呢...

彭博
2012/03/13
6K
8
关于时间的那些事--PHP、JavaScript、MySQL操作时间

PHP篇 PHP中时间操作单位是秒 一、将时间戳转为普通日期格式 //当前时间戳time();//当前时间格式date("Y-m-d H:i:s",time());//昨天时间格式date("Y-m-d,H:i:s",time()-3600*24); 二、将普通......

Martini
2018/09/27
0
0
在Bootstrap开发框架中使用bootstrap-datepicker插件

在基于Boostrap的Web开发中,往往需要录入日期内容,基于Boostrap的插件中,关于日期的录入可以使用bootstrap-datepicker这个非常不错的插件,以替代默认的type=date这种不太友好的日期录入控...

伍华聪
2018/10/22
0
0
吴海威---日报

项目:免费吧(网站) 参与人:吴海威 日期:2015/1/4 星期天 <>:完善try and pay前后端表单验证及功能测试! <>:关于这个功能点,因为涉及的很广泛,所以应该先将这个功能点拆分,且设置好预期完成时...

wuhaiwei
2015/01/05
5
0

没有更多内容

加载失败,请刷新页面

加载更多

Taro 兼容 h5 踩坑指南

最近一周在做 Taro 适配 h5 端,过程中改改补补,好不酸爽。 本文记录📝遇到的问题,希望为有相同需求的哥们👬节约点时间。 Taro 版本:1.3.9。 解决跨域问题 h5 发请求会报跨域问题,需...

dkvirus
45分钟前
3
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
今天
2
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
今天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
今天
19
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部