zoukankan      html  css  js  c++  java
  • 将时间转化为几秒前 几分钟前 几小时前...

    前言

    将时间转化为 几秒前、几分钟前、几小时前...  是一个比较常见需求,常用于新闻之内的。这个我们就不做讨论了 0.0~

    今天说说我遇到的一个问题: 为什么转化的时间在编辑器上是正常的,IOS手机上面就会变成 NaN ?what~

    Part.1  效果

    编辑器效果

    真机效果

    Part.2  问题原因

    问题原因:原来 IOS 手机的时间格式与 Android 手机不同(这个原因真不好发现)

                            IOS:年/月/日 

                      Android : 年-月-日

    解决步骤: 1. 将  年-月-日 运用正则替换为 年/月/日, 我这里的替换方法: time.replace(/-/g, '/') 

                       2. 然后用替换好的时间得到时间戳: new Date(time).getTime() 

                       3. 调用转化方法

    Part.3  转化方法

     1 /**
     2  * 转化时间格式 '几秒前、几分钟前、几小时前...'
     3  */
     4 function friendlyDate(timestamp) {
     5     var formats = {
     6         'year': '%n% 年前',
     7         'month': '%n% 月前',
     8         'day': '%n% 天前',
     9         'hour': '%n% 小时前',
    10         'minute': '%n% 分钟前',
    11         'second': '%n% 秒前',
    12     };
    13     var now = Date.now();
    14     var seconds = Math.floor((now - Number(timestamp)) / 1000);
    15     var minutes = Math.floor(seconds / 60);
    16     var hours = Math.floor(minutes / 60);
    17     var days = Math.floor(hours / 24);
    18     var months = Math.floor(days / 30);
    19     var years = Math.floor(months / 12);
    20 
    21     var diffType = '';
    22     var diffValue = 0;
    23     if (years > 0) {
    24         diffType = 'year';
    25         diffValue = years;
    26     } else {
    27         if (months > 0) {
    28             diffType = 'month';
    29             diffValue = months;
    30         } else {
    31             if (days > 0) {
    32                 diffType = 'day';
    33                 diffValue = days;
    34             } else {
    35                 if (hours > 0) {
    36                     diffType = 'hour';
    37                     diffValue = hours;
    38                 } else {
    39                     if (minutes > 0) {
    40                         diffType = 'minute';
    41                         diffValue = minutes;
    42                     } else {
    43                         diffType = 'second';
    44                         diffValue = seconds === 0 ? (seconds = 1) : seconds;
    45                     }
    46                 }
    47             }
    48         }
    49     }
    50     return formats[diffType].replace('%n%', diffValue);
    51 }
  • 相关阅读:
    MongoDB 创建账户
    MongoDB高可用集群配置方案
    学习CEGUI亟待解决问题一:文本控件的格式问题
    第一讲
    ERP初阶(三):MRP基本原理
    ERP初阶(四):MRP基本构成
    学习CEGUI亟待解决问题二:消息事件传递机制问题
    Groovy处理null对象为空字符串
    silverlight与CSLA的快速应用05安装CslaExtension
    silverlight与CSLA的快速应用08客户端的CSLA代码
  • 原文地址:https://www.cnblogs.com/langxiyu/p/13221156.html
Copyright © 2011-2022 走看看