您的位置:首页 > 移动开发 > Android开发

Android日期格式化

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

SymbolMeaningPresentationExample
Gera designator(Text)AD
yyear(Number)1996
Mmonth in year(Text & Number)July & 07
dday in month(Number)10
hhour in am/pm (1˜12)(Number)12
Hhour in day (0˜23)(Number)0
mminute in hour(Number)30
ssecond in minute(Number)55
Sfractional second(Number)978
Eday of week(Text)Tuesday
Dday in year(Number)189
Fday of week in month(Number)2 (2nd Wed in July)
wweek in year(Number)27
Wweek in month(Number)2
aam/pm marker(Text)PM
khour in day (1˜24)(Number)24
Khour in am/pm (0˜11)(Number)0
ztime zone(Text)Pacific Standard Time
Ztime zone (RFC 822)(Number)-0800
vtime zone (generic)(Text)Pacific Time
Vtime 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();
}

看一下输出吧。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: