Android日期格式化

来源:互联网 发布:数据对比分析软件 编辑:程序博客网 时间:2024/05/17 06:28
 今天整理一下关于日期格式化的内容,开发中时间总要根据我们的需要去显示不同的格式,我们可以利用java.text.SimpleDateFormat,所谓格式转换,肯定是根据模型转化出我们想要的时间格式,首先我们先看一下模型中各个参数的含义吧,胸API文档中看到这样一个表格


SymbolMeaningPresentationExampleGera designator(Text)ADyyear(Number)1996Mmonth in year(Text & Number)July & 07dday in month(Number)10hhour in am/pm (1˜12)(Number)12Hhour in day (0˜23)(Number)0mminute in hour(Number)30ssecond in minute(Number)55Sfractional second(Number)978Eday of week(Text)TuesdayDday in year(Number)189Fday of week in month(Number)2 (2nd Wed in July)wweek in year(Number)27Wweek in month(Number)2aam/pm marker(Text)PMkhour in day (1˜24)(Number)24Khour in am/pm (0˜11)(Number)0ztime zone(Text)Pacific Standard TimeZtime zone (RFC 822)(Number)-0800vtime zone (generic)(Text)Pacific TimeVtime 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
原创粉丝点击