在Java日期格式化中,用到的日期操作类主要有Date,Calendar,DateFormat,SimpleDateFormat。
Date
类Date表示特定的瞬间,精确到毫秒。
现在Date类中的方法基本上都不用了,不推荐直接使用Date类。
package com.fuwh.date; import java.util.Date; public class DateTest01 { public static void main(String[] args) { Date date=new Date(); System.out.println(new Date()); } }
Calendar
Calendar类是一个抽象类。它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
该类中提供了丰富多样的日期操作类。
实例:
package com.fuwh.calendar; import java.util.Calendar; import java.util.GregorianCalendar; public class CalendarTest01 { public static void main(String[] args) { Calendar calendar=new GregorianCalendar(); /* * 输出如下格式的日期 * 2017年03月06日20时33分50秒258毫秒 */ StringBuffer dateTime=new StringBuffer(); dateTime.append(calendar.get(Calendar.YEAR)).append("年"); dateTime.append(addZero(calendar.get(Calendar.MONTH)+1,2)).append("月"); dateTime.append(addZero(calendar.get(Calendar.DATE),2)).append("日"); dateTime.append(addZero(calendar.get(Calendar.HOUR_OF_DAY),2)).append("时"); dateTime.append(addZero(calendar.get(Calendar.MINUTE),2)).append("分"); dateTime.append(addZero(calendar.get(Calendar.SECOND),2)).append("秒"); dateTime.append(calendar.get(Calendar.MILLISECOND)).append("毫秒"); System.out.println(dateTime.toString()); } public static String addZero(int temp,int len){ StringBuffer s=new StringBuffer(); s.append(temp); if(s.length()<len){ s.insert(0, "0"); } return s.toString(); } }
DateFormat/SimpleDateFormat
DateFormat类是在java.text包中,Format类的子类。是一个抽象类。通常使用其子类SimpleDateFormat来取得指定格式的日期或者日期格式的转化。
在SimpleDateFormat类中,通过指定模式,来对日期进行格式化。
字母 日期或时间元素 表示 示例
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
主要方法:
public final String format(Date date):将一个Date格式化为日期/时间字符串
public Date parse(String source) throws ParseException:从给定字符串的开始解析文本,以生成一个日期,该方法不使用给定字符串的整个文本
实例:
package com.fuwh.format; import java.text.SimpleDateFormat; import java.util.Date; public class FormatTest01 { public static void main(String[] args) { //取得某固定模式的时间戳 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmssSSS"); System.out.println(sdf.format(new Date())); } }