一、Date
因为Date的设计具有"千年虫"以及"时区"的问题,所以Date中的大部分方法已经不建议使用了.
目前Date类只用其获取当前系统时间.
1.1 获取当前系统时间
(1) Date()
空参构造方法默认获取到当前时间.
Date now = new Date(); System.out.println(now);//Mon Nov 24 14:20:31 CST 2014
1.2 获取当前系统时间的毫秒值
1.3 设置时间为自定义毫秒值(1) getTime()
该方法用于获取一个Date对象所表示的时间点,该返回值为一个long值.表示该时间点距离1970年1月1日 00:00:00之间的毫秒差.
System.out.println(now.getTime());//1416810087906
(1) setTime()
该方法用于为一个Date对象设置其需要表示的时间,该参数为一个long值,其含义是需要表示的这个时间点距离1970年1月1日 00:00:00之间的毫秒差.
System.out.println(now); //Mon Nov 24 14:29:42 CST 2014 long time = now.getTime(); time = time + 24*60*60*1000; now.setTime(time); System.out.println(now); //Tue Nov 25 14:29:42 CST 2014
二、SimpleDateFormat
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类.它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
简单的说,SimpleDateFormat就是根据一个特定的日期格式在字符串与Date之间相互转换.
SimpleDateFormat类位于java.text包中.
2.1 日期模式匹配字符串
2.2 将Date格式化为String
字符 含义 示例 y 年 yyyy年->2014年 M 月 MM月->11月 d 日 dd日->24日 E 星期 E -> 星期一 a 上下午 a -> 下午(PM) H 小时(24小时制) HH:mm:ss --> 14:53:11 h 小时(12小时制) HH:mm:ss --> 14:53:11 m 分 HH:mm:ss --> 14:53:11 s 秒 HH:mm:ss --> 14:53:11
(1)format()
该方法用于将Date类型转换为String类型.
Date now = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(now));//2014-11-24 15:35:43
2.3 将String解析为Date
(1)parse()
该方法用于将String类型转换为Date类型.
String str = "2008-08-08 08:08:08"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = sdf.parse(str); System.out.println(date);//Fri Aug 08 08:08:08 CST 2008
三、Calendar
Calendar是抽象类,java.util.Calendar 类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算.
3.1 实例化Calendar的对象
Calendar是抽象类,其提供了一个工厂方法:Calendar getInstance().该方法可以根据当前系统所在地区获取一个适当的Calendar的子类实现.Calendar calendar = Calendar.getInstance();
3.2 设置日期及时间分量
(1) set()
该方法可以通过对不同的时间分量分别设置不同的值.
Calendar对不同的时间分量提供了相应的常量,我们在使用set方法设置时,第一个参数就应当使用对应的常量作为时间分量.
Calendar calendar = Calendar.getInstance(); //设置年为2008年 calendar.set(Calendar.YEAR,2008); //设置月为5月 calendar.set(Calendar.MONTH,4);//月份从0开始 calendar.set(Calendar.MONTH,Calendar.MAY);//也可以使用常量来设置 //设置日为30日 calendar.set(Calendar.DAY_OF_MONTH,30);
3.3 获取时间分量对应的值
(1) get()
该方法可以通过对不同的时间分量获取相应的值.Calendar对不同的时间分量提供了相应的常量,我们在使用get方法获取时,参数就应当使用对应的常量作为时间分量.
Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int date = calendar.get(Calendar.DAY_OF_MONTH); //需要注意,月份要加1,因为月份是从0开始的 System.out.println(year+"-"+(month+1)+"-"+date);//2014-11-24
3.4 获取给定时间分量所允许的最大值
(1) getActualMaximum()
该方法可以返回时间分量的最大值,可用于获取当月最后一天、当周最后一天等等.
Calendar calendar = Calendar.getInstance(); int max = calendar. getActualMaximum(Calendar.DAY_OF_MONTH); //获取当月最后一天 System.out.println(max);//30
3.5 计算时间分量的值
(1) add()
该方法可以为某个时间分量的值加上给定的值,若想减去给定的值,那么传入的值需要时负数即可.并且计算后会自动进行相应的进位,例如若当前为月底,那么加一天后,为下个月的月初,而月就会进位.
Calendar calendar = Calendar.getInstance(); //计算明天(在日的基础上加一天) calendar.add(Calendar.DAY_OF_YEAR,1);
3.6 获取Date对象所表示的时间
(1) getTime()
该方法用于获取Date对象所表示的时间.
Calendar calendar = Calendar.getInstance(); Date date = calendar.getTime(); System.out.println(date);// Mon Nov 24 15:59:31 CST 2014