安卓中时间格式化工具DateUtils

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
    评论
dateutils是一个功能强大且灵活的日期和时间处理工,在处理日期和时间数据时非常方便。其一个重要功能就是时间格式化,可以将日期和时间数据转换为特定的格式,以满足不同场景下的需求。 dateutils的格式化函数支持多种格式控制符,用来指定输出的日期时间格式体的格式控制符包括: • %Y:四位数表示的年份。 • %y:两位数表示的年份。 • %m:两位数表示的月份。 • %b:缩写的月份名称。 • %B:全称的月份名称。 • %d:两位数表示的日期。 • %e:没有前导零的日期。 • %H:24小时制的小时数。 • %I:12小时制的小时数。 • %M:分钟。 • %S:秒数。 • %p:大写的AM或PM。 通过在日期时间字符串使用这些格式控制符,程序可以根据实际需要对日期和时间进行格式化输出。例如,下面的命令用于将一个日期时间字符串格式化为年份和月份的方式输出: $ dateutils.dconv -i "%F %T" -f "%Y-%m" "2022-08-25 12:34:56" 2022-08 在上述命令,“%F %T”是输入日期时间格式的控制符,表示日期和时间以“年-月-日 时:分:秒”的格式组合成一个字符串;“%Y-%m”是输出日期时间格式的控制符,表示只输出“年份-月份”。 值得注意的是,在格式化日期时间字符串时,dateutils的控制符使用了Perl DateTime模块的代码风格,与C标准库函数的strftime函数略有不同,因此需要使用dateutils的格式控制符进行格式化输出。 综上所述,dateutils的格式化功能可以灵活应用于各种场景,只需要按照体需求设定合适的格式控制符即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值