使用相对时间而非绝对时间来显示诸如博客文章的发布时间等信息能简单而有效地提升用户体验。我在工作中设计的一个网站就有这种需求。记录下我自己的思考和设计方案备考。
1. 分段、分精度显示方案
时间段 | 说明 | 显示示例(过去) | 显示示例(未来) |
0~4分钟 | 不显示实际的分钟数 | 刚才 | 现在/马上 |
5~59分钟 | 显示分钟数 | 23分钟前 | 23分钟后 |
1~4小时 | 显示小时数 | 1小时前 | 1小时后 |
5~47小时 | 按下述昨今明规则处理 | 昨天上午 |
明天傍晚 |
48小时以上 | 显示天数 | 2天前 | 1天后 |
7天以上 | 显示周数 | 3周前 | 1周后 |
5周以上 | 显示月数 | 1个月前 | 4个月后 |
12个月以上 | 显示年数 | 2年前 | 1年后 |
2. 进位规则
为了使时间的模糊化尽量贴近用户心理,我决定按照“黄金分割”法对尾数进行舍入。例如:
- 大于37秒算1分钟
- 大于37分钟算1小时
- 大于14.8小时算1天
- 大于4.3天算1周
- 大于7.4个月算1年
3. 昨今明规则
若时差超过4小时但又不足48小时,适用“昨今明”规则:如果时间点落在昨、今、明三天内的,按下表显示,否则直接显示天数。
称呼 | 时段(含,不含) | 时长(小时) | 标签 |
凌晨 | 0:00~6:00 | 6 | dawn |
早上 | 6:00~8:30 | 2.5 | morning |
上午 | 8:30~11:30 | 3 | am |
中午 | 11:30~13:00 | 1.5 | noon |
下午 | 13:00~17:00 | 4 | pm |
傍晚 | 17:00~18:00 | 1 | dusk |
晚上 | 18:00~22:00 | 4 | evening |
深夜 | 22:00~24:00 | 2 | night |
上表中的标签用作本地化。亦即,函数或对象只返回标签,由调用者将标签翻译至恰当的语言。
没有评论:
发表评论