function formatTime(time) { // 把传入的字符串时间或时间戳转换为人类可读的友好格式 // 支持同时传入时间字符串或时间戳 // eg: // formatTime('2021-09-29 04:00:00') // formatTime(1632879192) // formatTime('1632879192123') //传入的时间戳带毫秒 var timestamp = time % 1 === 0 ? parseInt(time) : new Date(time).getTime(); // 获取时间戳 var timestamp = String(timestamp).length === 10 ? timestamp : Math.round(timestamp / 1000); // 去掉毫秒 var mistiming = Math.round(new Date().getTime() / 1000) - timestamp; var postfix = mistiming > 0 ? '前' : '后' var arrr = ['年', '个月', '星期', '天', '小时', '分钟', '秒']; var arrn = [31536000, 2592000, 604800, 86400, 3600, 60, 1]; mistiming = Math.abs(mistiming); for (var i = 0; i < 7; i++) { var inm = Math.floor(mistiming / arrn[i]) if (inm != 0) { return inm + arrr[i] + postfix } } } formatTime('2021-09-29 04:00:00'); formatTime(1632879192);
![]() | 1 Mikewu 2021-09-29 10:20:13 +08:00 ![]() |
2 luckyc OP 奇怪了, iOS 下企业微信内嵌的浏览器不行. 返回 NaN |
![]() | 3 joyyu 2021-09-29 10:26:36 +08:00 ![]() safari 不支持 '2021-09-29 04:00:00' 这种格式的时间,你可以统一成 '2021/09/29 04:00:00'。 |
![]() | 5 IsaacYoung 2021-09-29 10:31:00 +08:00 via iPhone 乖乖调用那一堆 set 方法 |
6 luckyc OP 是这么回事, 谢谢各位了 var timestamp = time % 1 === 0 ? parseInt(time) : new Date(time.replace(/-/g, "/")).getTime(); // 获取时间戳 |
![]() | 7 Pipecraft 2021-09-29 10:38:09 +08:00 ![]() 注意: 由于浏览器之间的差异与不一致性,**强烈不推荐**使用 Date 构造函数来解析日期字符串 (或使用与其等价的 Date.parse)。 developer.mozilla.org/zh-CN/docs/Web/Javascript/Reference/Global_Objects/Date |
![]() | 8 ahswch 2021-09-29 11:40:22 +08:00 3 楼正解 之前也遇到这种问题 - 替换成 / 就行了 |
![]() | 10 ayase252 2021-09-29 14:05:27 +08:00 ![]() 解析时间用 day.js ,不要用 new Date(),浏览器实现有差异 |
![]() | 11 Pipecraft 2021-09-29 15:01:32 +08:00 ![]() @James369 Moment.js 可以,但是考虑性能和文件大小的话,Day.js 会更好。 github.com/you-dont-need/You-Dont-Need-Momentjs/blob/master/README.md 这里有比较。 `String + Time Format` 部分有说明如何解析的。 |
![]() | 12 nekochyan 2021-09-29 15:19:02 +08:00 iOS 的微信小游戏也有这个问题,上周我们就遇到了,改成时间戳好点 |
![]() | 13 icanfork 2021-09-29 16:16:29 +08:00 '2021-01-01'.replace(/-/g, '/') |
14 lscho 2021-09-29 17:05:12 +08:00 via Android 没有点进来之前,只看了标题,我就知道大概率是这个日期格式问题 |
![]() | 15 Coder89757 2021-09-29 17:53:48 +08:00 dayjs 加一,比 moment 包体积小超多 但是同样调用方式的库 https://bundlephobia.com/package/dayjs https://bundlephobia.com/package/moment |
16 wednesdayco 2021-09-29 18:20:29 +08:00 只有 dayjs 和 moment 党么? dateFns 没人了么! |
![]() | 17 violetlai 2021-09-30 13:58:58 +08:00 用 dayjs 吧 自己写太蛋疼了 |
![]() | 18 shilianmlxg 2021-09-30 16:54:49 +08:00 @wednesdayco 谢谢大佬 让咸鱼见识了亿点点东西 |