android date格式化,Android DateFormat的简单示例

在《Android Programming : The Big Nerd Ranch Guide (3rd Edition)》书中,作者提出用DateFormat方法来格式化时间。

3a9b6c6e9512

在之前的代码中,通过Date()获取当前的时间,但是Date时间对象显示十分冗长,不方便用户查看。

3a9b6c6e9512

那么接下来,我们使用DateFormat来格式化时间。在Crime类中,申明一个新的字符串变量,命名为mDateStr,并生成其getter方法。在构造函数中,添加DateFormat方法。

private String mDateStr;

Crime() {

mId = UUID.randomUUID();

mDate = new Date();

DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.ENGLISH);

mDateStr = dateFormat.format(mDate);

}

public String getmDateStr() {

return mDateStr;

}

除了getDateInstance获取时间的实例对象外,DateFormat还可以获取getTimeInstance(获取时间)、getDateTimeInstance(获取日期和时间)这两个实例对象。其中的两个参数,前者表示日期/时间显示的格式,包括FULL、LONG、MEDIUM、SHORT,可以通过调试看下他们的区别;后者表示地区。

下图为MEDIUM的格式。

3a9b6c6e9512

有些需求会要求日期显示两位数,比如“2019-03-04”,以上方法就不适用了,我们可以用SimpleDateFormat来客制化日期格式。

SimpleDateFormat是DateFormat的一个子类,在调整代码之前,需要了解SimpleDateFormat中一些模式字母(pattern letters)的含义。oracle相关文档中解释得很详细:

3a9b6c6e9512

常用的一些表示,归纳如下:

y:年

M:月

d:日

h:时(12小时制,0-12)

H:时(24小时制,0-23)

m:分

s:秒

S:毫秒

E:星期几

a:上下午标识

了解这些后,就可以修改代码啦,将DateFormat相关代码注释掉,换成SimpleDateFormat。

Crime() {

mId = UUID.randomUUID();

mDate = new Date();

// DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.ENGLISH);

// mDateStr = dateFormat.format(mDate);

SimpleDateFormat dateFormat = new SimpleDateFormat("E,MM dd,yyyy", Locale.ENGLISH);

mDateStr = dateFormat.format(mDate);

}

运行代码,效果如下:

3a9b6c6e9512

这时,“月/日”都是两位数了,但这看上去很突兀,如果能把月换成英文就好看了,查阅SimpleDateFormat相关文档,可以看到

3a9b6c6e9512

如果字母数大于等于3个时,月份显示为文字,否则就显示为数字;当字母大于等于4个时显示全称,否则显示缩写。因此,可以做以下微调:

Crime() {

mId = UUID.randomUUID();

mDate = new Date();

// DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.ENGLISH);

// mDateStr = dateFormat.format(mDate);

SimpleDateFormat dateFormat = new SimpleDateFormat("EEEE,MMMM dd,yyyy", Locale.ENGLISH);

mDateStr = dateFormat.format(mDate);

}

此时再运行代码,就可以得到我们想要的效果。

3a9b6c6e9512

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值