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 1
|
2
l4ever OP 奇怪了, iOS 下企业微信内嵌的浏览器不行. 返回 NaN
|
3
joyyu 2021-09-29 10:26:36 +08:00 7
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
l4ever OP 是这么回事, 谢谢各位了
var timestamp = time % 1 === 0 ? parseInt(time) : new Date(time.replace(/-/g, "/")).getTime(); // 获取时间戳 |
7
Pipecraft 2021-09-29 10:38:09 +08:00 1
注意: 由于浏览器之间的差异与不一致性,**强烈不推荐**使用 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 1
解析时间用 day.js ,不要用 new Date(),浏览器实现有差异
|
11
Pipecraft 2021-09-29 15:01:32 +08:00 1
@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
belin520 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 谢谢大佬 让咸鱼见识了亿点点东西
|