Android日期格式化

 今天整理一下关于日期格式化的内容,开发中时间总要根据我们的需要去显示不同的格式,我们可以利用java.text.SimpleDateFormat,所谓格式转换,肯定是根据模型转化出我们想要的时间格式,首先我们先看一下模型中各个参数的含义吧,胸API文档中看到这样一个表格


Symbol Meaning Presentation Example
G era designator (Text) AD
y year (Number) 1996
M month in year (Text & Number) July & 07
d day in month (Number) 10
h hour in am/pm (1˜12) (Number) 12
H hour in day (0˜23) (Number) 0
m minute in hour (Number) 30
s second in minute (Number) 55
S fractional second (Number) 978
E day of week (Text) Tuesday
D day in year (Number) 189
F day of week in month (Number) 2 (2nd Wed in July)
w week in year (Number) 27
W week in month (Number) 2
a am/pm marker (Text) PM
k hour in day (1˜24) (Number) 24
K hour in am/pm (0˜11) (Number) 0
z time zone (Text) Pacific Standard Time
Z time zone (RFC 822) (Number) -0800
v time zone (generic) (Text) Pacific Time
V time zone (location) (Text) United States (Los Angeles)
' escape for text (Delimiter) 'Date='
'' single quote (Literal) 'o''clock'
简单的理解一下吧,y代表年,M代表月份,d代表天,h代表12进制的小时,H代表24进制的小时,m代表分钟,s代表秒,S代表毫秒,E代表星期,D代表一年中的第几天,各种含义大家可以直接从表格中看到,了解了这些,我们学习日期格式化就轻松很多了。
接下来,我们再看下面这段话

The count of pattern letters determines the format:

(Text): 4 or more pattern letters → use the full form, less than 4 pattern letters → use a short or abbreviated form if one exists.

(Number): the minimum number of digits. Shorter numbers are zero-padded to this amount. Year is handled specially; that is, if the count of 'y' is 2, the year will be truncated to 2 digits. (if "yyyy" produces "1997", "yy" produces "97".) Unlike other fields, fractional seconds are padded on the right with zero.

(Text & Number): 3 or over, use text, otherwise use number.

Any characters in the pattern that are not in the ranges of ['a'..'z'] and ['A'..'Z'] will be treated as quoted text. For instance, characters like ':', '.', ' ', '#' and '@' will appear in the resulting time text even they are not embraced within single quotes.

A pattern containing any invalid pattern letter will result in an exception thrown during formatting or parsing.

什么意思,总结起来很简单,就是y代表年,yy代表96年格式,yyyy代表1996年格式。我们用文档中的例子来看,
 Format Pattern                       Result
 --------------                       -------
 "yyyy.MM.dd G 'at' HH:mm:ss vvvv" →  1996.07.10 AD at 15:08:56 Pacific Time
 "EEE, MMM d, ''yy"                →  Wed, July 10, '96
 "h:mm a"                          →  12:08 PM
 "hh 'o''clock' a, zzzz"           →  12 o'clock PM, Pacific Daylight Time
 "K:mm a, vvv"                     →  0:00 PM, PT
 "yyyyy.MMMMM.dd GGG hh:mm aaa"    →  01996.July.10 AD 12:08 PM

          接下来我们看一下SimpleDateFormat的使用,将Date转换成指定格式的时间字符串,将字符串形式的时间转成Date。

       /**
         * 默认格式输出
         */
        SimpleDateFormat f = new SimpleDateFormat();
        String format = f.format(new Date());
        Log.i("默认格式", format);
        /**
         * yyyy-MM-dd HH:mm
         */
        SimpleDateFormat f2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        String format2 = f2.format(new Date());
        Log.i("yyyy-MM-dd HH:mm", format2);
        /**
         * yyyy年MM月dd日 HH时mm分ss秒
         */
        SimpleDateFormat f3 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        String format3 = f3.format(new Date());
        Log.i("yyyy年MM月dd日 HH时mm分ss秒", format3);
        /**
         * yyyy年MM月dd日 HH时mm分ss秒转成Date形式
         */
        SimpleDateFormat f4 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        try {
            Date date = f4.parse(format3);
            Log.i("yyyy年MM月dd日 HH时mm分ss秒转成Date", date.toString());
        } catch (ParseException e) {
            e.printStackTrace();
        }

看一下输出吧。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值