Android日期格式化
2016-06-30 12:17
531 查看
今天整理一下关于日期格式化的内容,开发中时间总要根据我们的需要去显示不同的格式,我们可以利用java.text.SimpleDateFormat,所谓格式转换,肯定是根据模型转化出我们想要的时间格式,首先我们先看一下模型中各个参数的含义吧,胸API文档中看到这样一个表格
简单的理解一下吧,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年格式。我们用文档中的例子来看,
接下来我们看一下SimpleDateFormat的使用,将Date转换成指定格式的时间字符串,将字符串形式的时间转成Date。
看一下输出吧。
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' |
接下来,我们再看下面这段话
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(); }
看一下输出吧。
相关文章推荐
- android 访问超时,ios正常
- android studio 中查找代码中的硬编码
- Android之ProgressBar及其子类SeekBar和RatingBar的使用(二)
- android_Handler详解
- android 图片缓存
- Android中获取图片的宽和高
- android带动画的圆形进度条
- Android 获取TextView中text的宽度
- 偏好设置
- [android6.0]添加System Jar记录
- 【安卓】Android的字符串格式化
- android Textview 使用之一:伸缩效果
- Android Studio中的单元测试
- Android 、Java 验证二代身份证号码是否正确
- Android优化应用启动速度
- 静态Fragment碎片使用 范例
- Android 自定义 spinner (背景、字体颜色)
- Android对外置sd卡的权限问题(上)
- Android Design Support Library使用详解
- 没时间解释了,快使用Snackbar!——Android Snackbar花式使用指南