日期格式化

来源:互联网 发布:在线制作淘宝店招 编辑:程序博客网 时间:2024/05/19 14:01
Java 语言的Calendar(日历),Date(日期), 和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分. 日期是商业逻辑计算一个关键的部分. 所有的开发者都应该能够计算未来的日期, 定制日期的显示格式, 并将文本数据解析成日期对象.

我们将讨论下面的类:  
1、具体类(和抽象类相对)java.util.Date  
2、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat  
3、抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar  
4.SimpleDateFormat类继承于DateFormat,DateFormat继承于Format。Format提供了很多对信息,数字,日期等等内容的格式化,我们这次主要看一下SimpleDateFormat的格式化方法。另外不能忽视的是,SimpleDateFormat除了格式化,还具有解析一个String变为Date的功能。
具体类可以被实例化, 但是抽象类却不能. 你首先必须实现抽象类的一个具体子类.  

一、Date类
1.构造函数
Date d = new Datae);返回Data对象代表当前时间:Sun Sep 17 16:06:16 CST 2017
周 月 号 时 分 秒 时区 年
Date d = new Date(long data);分配一个Data对象,并将其初始化为标准基准时间以后的指定毫秒数
2.方法

二、SimpleDateFormat
1.模型字母
2.构造方法
3.方法


三、
1.使用 format() 方法将日期转换为指定格式的文本
“yyyy-MM-dd HH:mm:ss” 为预定义字符串, yyyy 表示四位年,MM 表示两位月份, dd 表示两位日期, HH 表示小时(使用24小时制), mm 表示分钟, ss 表示秒
这样就指定了转换的目标格式,调用 format() 方法将时间转换为指定的格式的字符串。
2.使用 parse() 方法将文本转换为日期
“yyyy年MM月dd日 HH:mm:ss” 指定字符串的日期格式,调用 parse() 将文本转换为日期。
3.注意点
调用 SimpleDateFormat 对象的 parse() 方法时可能会出现转换异常,即 ParseException ,因此需要进行异常处理
使用 Date 类时需要导入 java.util 包,使用 SimpleDateFormat 时需要导入 java.text 包

四、Calendar
1.Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处理。
2.Calendar是抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间.
调用 Calendar 类的 getInstance() 方法获取一个实例,然后通过调用 get() 方法获取日期时间信息,参数为需要获得的字段的值, Calendar.Year 等为 Calendar 类中定义的静态常量。
4.Calendar 类提供了 getTime() 方法,用来获取 Date 对象,完成 Calendar 和 Date 的转换,还可通过 getTimeInMillis() 方法,获取此 Calendar 的时间值,以毫秒为单位。

注意:大小写不同代表的意义不同
G Era 标志符 Text AD
y 年 Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800