一、DateFormat
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。
1、初始化DateFormat类,如下:
DateFormat df = DateFormat.getDateInstance();
2、使用 getDateInstance 来获取该国家/地区的标准日期格式,格式化不同语言环境的日期;如下:
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
1.DateFormat.LONG:控制结果长度
SHORT 完全为数字,如 12.13.52 或 3:30pm
MEDIUM 较长,如 Jan 12, 1952
LONG 更长,如 January 12, 1952 或 3:30:32pm
FULL 是完全指定,如 Tuesday、April 12、1952 AD 或 3:30:42pm PST。
2.Locale.FRANCE:设置区域
3、示例:
public static void getDateFormat() throws ParseException{
//创建日期
Date date=new Date();
//初始化DateForat,通过getInstance()获取为SHORT风格的默认日期/时间格式器
DateFormat df=DateFormat.getInstance();
System.out.println("java中默认日期格式、默认区域:"+df.format(date)+"\r\n");
// 格式化不同语言环境日期时间,
DateFormat df1=DateFormat.getDateInstance(DateFormat.FULL,Locale.CHINA);
System.out.println("日期按照Full模式,区域设置中文:"+df1.format(date)+"\r\n");
DateFormat df2=new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 EE",Locale.CHINA);
System.out.println("指定日期格式,区域设置中文:"+df2.format(date)+"\r\n");
//指定日期格式:年-月-日-时-分-秒-星期
DateFormat df3=new SimpleDateFormat("指定日期格式:"+"yyyy-MM-dd hh:mm:ss EE"+"\r\n");
//format()方法将Date格式化为日期-时间字符串
System.out.println(df3.format(date));
//使用parse()方法将字符串转换为日期
Date date1=df.parse("16-8-2 下午3:33");
System.out.println("将字符串转换为日期:"+date1);
}
二、SimpleDateFormat
SimpleDateFormat
是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpleDateFormat
使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过DateFormat
中的getTimeInstance
、getDateInstance
或getDateTimeInstance
来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。可以根据需要使用applyPattern
方法来修改格式模式。
1、初始化SimpleDateFormat
SimpleDateFormat sdf=new SimpleDateFormat();
2、使用
SimpleDateFormat格式化日期时间,将Date转换为String类型;如下:
Date date=new Date();
//格式化日期时间 hh:12小时制,HH:24小时制
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EE",Locale.CHINA);
//将Date转为String类型
String strDate=sdf.format(date);
//打印
System.out.println("getSimpleDateFormat格式化日期时间:"+strDate);
打印:
getSimpleDateFormat格式化日期时间:2016-08-02 19:19:29 星期二
2、将String转换为Date类型;如下:
Date now=sdf.parse(strDate);
System.out.println("将字符串转换为日期时间格式:"+now);
打印:
将字符串转换为日期时间格式:Tue Aug 02 19:19:29 CST 2016
三、Calendar日历类
Calendar
类是一个抽象类,它为特定瞬间与一组诸如YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等日历字段
之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
1、Calendar构造方法概要
2、初始化Calendar类,getInstance()方法获取默认时区和语言环境日历;如下:
Calendar cal=Calendar.getInstance();
3、初始化Calendar类,指定时区、语言环境,如下:
//第1个参数:指定时区为东八区,即北京时间;第2个参数:设置语言环境
Calendar cc=Calendar.getInstance(TimeZone.getTimeZone("GMT-8"),Locale.CHINA);
4、设置日期时间,将Calendar转换为Date对象
,通过SimpleDateFormat格式化Date日期时间,如下:
//初始化Calendar对象
Calendar cal=Calendar.getInstance();
//设置日历的日期时间
cal.set(Calendar.YEAR,2012);
cal.set(Calendar.MARCH,10);
cal.set(Calendar.DAY_OF_MONTH,06);
//Calendar转换为Date对象
Date date=cal.getTime();
//创建SimpleDateFormat格式器将Date进行格式转换
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
String strdate=sdf.format(date);
//打印
System.out.println("纪念日:"+strdate);
打印:
纪念日:2012年11月06日
4、获取年-月-日-时-分-秒-星期
,如下:
//初始化Calendar对象
Calendar cal=Calendar.getInstance();
int year=cal.get(Calendar.YEAR);
int march=cal.get(Calendar.MARCH)+1;
int month=cal.get(Calendar.DAY_OF_MONTH);
int hour=cal.get(Calendar.HOUR_OF_DAY);//24小时制
int minute=cal.get(Calendar.MINUTE);
int second=cal.get(Calendar.DAY_OF_WEEK)-1;
//打印
System.out.println(year+"年"+march+"月"+month+"日"+" "+hour+"时"+minute+"分"+second+"秒"+" "+"星期"+second);
打印:
2016年8月2日 19时49分2秒 星期2
四、12小时制度与24小时制
格式化日期时间时,如果希望时间为12小时制,则使用:hh:mm:ss;24小时制,使用:HH:mm:ss。