一、Date类,目前系统不推荐使用,还是有必要讲下,毕竟很多情况下,初学者可能接触的多就是Date 类了,所以很多人喜欢用。
①、使用new Date()代表当前系统时间
Date date = new Date();
System.out.println(date);
使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象。结果格式如下 :
Sun Jan 17 15:22:53 CST 2016
②、使用指定时间(年 - 1900, 月 -1 , 日)格式来创建时间对象
Date date = new Date(2016 - 1900, 1-1, 17);
System.out.println(date.toLocaleString()); // 2016-1-17 0:00:00
注意 : 年份 要 - 1900 , 月份 要 - 1
③、使用指定毫秒来创建Date
Date now = new Date();
Date now2 = new Date(now.getTime());
System.out.println(now2);// 2016-1-17 15:32:59
二、Calendar类
我们都知道, java Date类 有些方法是过时的,现在系统也推荐使用Calendar类进行时间和日期处理。Calendar 类的设计及其提供的功能远比Date强大。
Calendar是抽象基类,它有很多子类,但它却对开发者而言是透明的。我们只需要简单调用Calendar.getInstance(),就可以返回当前系统
时间对象,有了这个对象,就可以为所欲为了!
①、 Calendar类的常量
Calendar.YEAR——年份
Calendar.MONTH——月份
Calendar.DATE——日期
Calendar.DAY_OF_MONTH——日期,和上面的字段完全相同
Calendar.HOUR——12小时制的小时数
Calendar.HOUR_OF_DAY——24小时制的小时数
Calendar.MINUTE——分钟
Calendar.SECOND——秒
Calendar.DAY_OF_WEEK——星期几
②、Calendar 构造函数
protected Calendar() {
},由于是protected函数,故无法直接通过new来创建对象,但Calendar提供了getInstance()来获取Calendar对象。
③、Calendar类的常用方法
setTime(Date date) // 设置指定时间date的Calendar对象
Date getTime() // 获取我们创建的Calendar对象对应的时间
get(int field) // 获取指定field的值。field如①。
二、自己总结的日期工具类
// base 操作 public static void base() { Calendar calendar = Calendar.getInstance(); Date now = calendar.getTime(); print(now); System.out.println(calendar.getActualMaximum(Calendar.MONTH)); // 11 System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 当前月的最后一天 如 2016年1月, 则为31 System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_WEEK)); // 7 System.out.println(calendar.getActualMaximum(Calendar.HOUR_OF_DAY)); // 23 System.out.println(calendar.getActualMaximum(Calendar.MINUTE)); // 59 System.out.println(calendar.getActualMaximum(Calendar.SECOND)); // 59 System.out.println(calendar.get(Calendar.DATE)); System.out.println(calendar.get(Calendar.YEAR)); // 当前年份 System.out.println(calendar.get(Calendar.MONTH) + 1); // 当前月份 System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 当前时 System.out.println(calendar.get(Calendar.MINUTE)); // 当前分 System.out.println(calendar.get(Calendar.SECOND)); // // 当前秒 System.out.println(calendar.getTimeInMillis()); // 毫秒 } /** * 获取两个指定日期的间隔天数 * @param start * @param end * @return */ public static int getDaysBetween(Date start, Date end) { Calendar scalendar = Calendar.getInstance(); scalendar.setTime(start); Calendar ecalendar = Calendar.getInstance(); ecalendar.setTime(end); long between = ecalendar.getTimeInMillis() - scalendar.getTimeInMillis(); return (int) (between / 60L / 60L / 24L / 1000L); } /** * start <= target <= end : true * @param target * @param start * @param end * @return */ public static boolean isBetween(Date target, Date start, Date end) { long t = target.getTime(); long s = start.getTime(); long e = end.getTime(); if(t >= s && t <= e) { return Boolean.TRUE; } return Boolean.FALSE; } /** * 获取当前月的第一天 * @param date * @return */ public static Date getFirstDateOnMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, 1); return zerolizedTime(calendar.getTime()); } /** * 获取当前月的最后一天 * @param date * @return */ public static Date getLastDateOnMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DAY_OF_MONTH, 0); return zerolizedTime(calendar.getTime()); } /** * 获取下个月的第一天 * @param date * @return */ public static Date getFirstDateOnNextMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, 1); return getFirstDateOnMonth(calendar.getTime()); } /** * 获取下个月的最后一天 * @param date * @return */ public static Date getLastDateOnNextMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, 1); return getLastDateOnMonth(calendar.getTime()); } /** * 把日期后的时间归0 变成(yyyy-MM-dd 00:00:00:000) * @param Date * @return Date */ public static Date zerolizedTime(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } /** * 在指定的date上 + days 天 * @param date * @param days * @return */ public static Date addDateDay(Date date, int days) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_YEAR, days); return calendar.getTime(); } /** * 在指定的date上 + minutes 分 * @param date * @param minutes * @return */ public static Date addDateMinute(Date date, int minutes) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MINUTE, minutes); return calendar.getTime(); } /** * 在指定的date上 + seconds 秒 * @param date * @param seconds * @return */ public static Date addDateSeconds(Date date, int seconds) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.SECOND, seconds); return calendar.getTime(); } // date 转 string public static String format2yyyyMMdd(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(date); } public static String format2yyyyMMddHHmmss(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(date); } public static String format2yyyyMMddHH(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:00:00"); return sdf.format(date); } public static String format2yyyyMMddHHmm(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:00"); return sdf.format(date); } // string 转 date public static Date parseDate2yyyyMMdd(String date) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date parseDate = sdf.parse(date); return parseDate; } public static Date parseDate2yyyyMMddHHmmss(String date) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date parseDate = sdf.parse(date); return parseDate; } @SuppressWarnings("deprecation") public static void print(Date date) { System.out.println(date.toLocaleString()); } public static void print(String date) { System.out.println(date); }