首页 > 其他 > 详细

将时间转化为几秒前 几分钟前 几小时前...

时间:2020-07-01 21:55:33      阅读:64      评论:0      收藏:0      [点我收藏+]

前言

将时间转化为 几秒前、几分钟前、几小时前...  是一个比较常见需求,常用于新闻之内的。这个我们就不做讨论了 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 }
View Code

 

将时间转化为几秒前 几分钟前 几小时前...

原文:https://www.cnblogs.com/langxiyu/p/13221156.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!