2011年10月14日星期五

提升用户体验的相对时间设计

使用相对时间而非绝对时间来显示诸如博客文章的发布时间等信息能简单而有效地提升用户体验。我在工作中设计的一个网站就有这种需求。记录下我自己的思考和设计方案备考。

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年
以上进位规则是在分段方案的基础上进行的。比如4.3天是在48小时以上7天以下的,应该显示天数,只有大于7天以后才适用4.3天算1周的规则,亦即:7~11.3天都算1周,11.3天以后算两周。

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

上表中的标签用作本地化。亦即,函数或对象只返回标签,由调用者将标签翻译至恰当的语言。

没有评论: