Date类
java.util 包提供了 Date 类来封装当前的日期和时间,Date 类提供两个构造函数来实例化 Date 对象
- 第一个构造函数使用当前日期和时间来初始化对象 Date( )
- 第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数 Date(long millisec)
package com.yyx.util; import java.util.Date; /** * 日期时间工具类 * * @author yyx 2018年6月25日 */ public class DateUtil { public static void main(String[] args) { testDate(); } /** * Date类的其他方法都已过时,被替代 */ public static void testDate() { Date date=new Date(); System.out.println(date.toString()); //getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数 long currentTime=date.getTime(); System.out.println(currentTime); //设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点 date.setTime(currentTime+1530367288365L); System.out.println(date.toString()); long time=System.currentTimeMillis(); Date dateAnother=new Date(time); System.out.println(dateAnother.toString()); } }
Calendar类
Calendar是一个抽象类,不能直接实例化,但是Calendar类提供一个工厂方法,即getInstance来创建一个Calendar实例
package com.yyx.util; import java.util.Calendar; import java.util.Date; /** * 日期时间工具类 * * @author yyx 2018年6月25日 */ public class DateUtil { public static void main(String[] args) { TestCalendar(); } public static void TestCalendar() { Calendar calendar = Calendar.getInstance(); // 获取年份 int year = calendar.get(Calendar.YEAR); // 获取月,这里需要需要月份的范围为0~11,因此获取月份的时候需要+1才是当前月份值 int month = calendar.get(Calendar.MONTH) + 1; // 获取日 int day = calendar.get(Calendar.DAY_OF_MONTH); // 获取时 // int hour = calendar.get(Calendar.HOUR); int hour = calendar.get(Calendar.HOUR_OF_DAY); // 24小时表示 // 获取分 int minute = calendar.get(Calendar.MINUTE); // 获取秒 int second = calendar.get(Calendar.SECOND); // 星期,英语国家星期从星期日开始计算 int weekday = calendar.get(Calendar.DAY_OF_WEEK) - 1; System.out.println(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second + " 星期" + weekday); //将给定的日历字段设置为给定值 calendar.set(Calendar.YEAR, 2020); calendar.set(Calendar.MONTH, 7); System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH)+1) + "-" + day + " " + hour + ":" + minute + ":" + second + " 星期" + weekday); //根据日历的规则,为给定的日历字段添加或减去指定的时间量 calendar.add(Calendar.YEAR, 2); System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH)+1) + "-" + calendar.get(Calendar.DAY_OF_MONTH)); //返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象 Date date=calendar.getTime(); System.out.println(date.toString()); //使用给定的 Date 设置此 Calendar 的时间 Date dateAnother=new Date(); calendar.setTime(dateAnother); System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH)+1) + "-" + calendar.get(Calendar.DAY_OF_MONTH)); } }
SimpleDateFormat类
SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化
package com.yyx.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * 日期时间工具类 * * @author yyx 2018年6月25日 */ public class DateUtil { public static void main(String[] args) { testSimpleDateFormat(); } public static void testSimpleDateFormat() { //format() 将给定的 Date 格式化为日期/时间字符串 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); Date date=new Date(); System.out.println(simpleDateFormat.format(date)); String dateString = "2009-08-02 13:43:00"; SimpleDateFormat df =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //parse() 解析字符串的文本,生成 Date try { System.out.println(df.parse(dateString)); } catch (ParseException e) { e.printStackTrace(); } } }