安卓中时间格式化工具DateUtils

本文介绍了Android中的DateUtils工具类,它能帮助开发者方便地格式化时间,提供人性化的显示方式,如"两分钟前","一小时前"。通过getRelativeTimeSpanString方法,结合minResolution参数和flags选项,实现不同时间间隔的精确显示。DateUtils考虑了本地化,根据系统语言自动调整时间显示。文章通过实例详细解释了各个参数的用途和效果。
摘要由CSDN通过智能技术生成

JDK中提供了好用的SimpleDateFormat工具来帮我们把格式化时间,并且制定了格式化的规范,只要我们按照规范传入字符串,就能随意定制我们想要的时间格式,例如:

  • 传入"yyyy.MM.dd G 'at' HH:mm:ss z",就能得到2001.07.04 AD at 12:08:56 PDT
  • 传入"EEE, MMM d, ''yy",就能得到Wed, Jul 4, '01
  • 传入"h:mm a",就能得到12:08 PM

等等,具体用法 可以查阅官方文档,用起来也非常方便。
但是近些年移动互联网发展迅速,用户体验也被越来越多的重视起来,对于时间的显示也越来越人性化。比如说聊天记录的时间,人们更愿意看到"两分钟前","一小时前","昨天"等样式,而不是冷冰冰的几月几号几点几分。
当产品给出了如上的需求时,很多开发者都是去判断要显示的时间与当前时间的相对间隔,然后再查表得出需要显示的时间。殊不知,安卓已经给我们提供好了相应的工具,只需一个方法调用统统搞定。该工具就是今天的主角DateUtils,位于android.text.format包下。
作为系统提供的工具,当然也会发挥本地化的优势。格式化出来的时间也会跟随系统系统自动变化,比如说如果系统默认语言是中文,格式化出来的时间是"一分钟前",而如果系统语言是英语,格式化的时间就变成"one minute ago",省去了翻译字符串的麻烦。

小试牛刀

按照上面描述的需求,我们来看看用DateUtils如何实现:

long currentTimeMillis = System.currentTimeMillis();
//两分钟前
Log.d(TAG, "getRelativeTimeSpanString " + DateUtils.getRelativeTimeSpanString(
                        currentTimeMillis - 2 * 60 * 1000));
//三个小时前
Log.d(TAG, "getRelativeTimeSpanString " + DateUtils.getRelativeTimeSpanString(
                        currentTimeMillis - 3 * 60 * 60 * 1000));
//一天前
Log.d(TAG, "getRelativeTimeSpanString " + DateUtils.getRelativeTimeSpanString(
                        currentTimeMillis - 28 * 60 * 60 * 1000));

打印出来的结果如下:

08-12 15:43:30.454 13935-13935/com.wangng.myapplication D/DateUtilsTAG: getRelativeTimeSpanString2 分钟前
08-12 15:43:30.454 13935-13935/com.wangng.myapplication D/DateUtilsTAG: getRelativeTimeSpanString3 小时前
08-12 15:43:30.464 13935-13935/com.wangng.myapplication D/DateUtilsTAG: getRelativeTimeSpanString昨天

getRelativeTimeSpanString有几个重载方法:

public static CharSequence getRelativeTimeSpanString(lo
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值