Java日期概述:
java 日期主要由 1. java.util.Date
- java.sql.Date
- java.sql.Time
- java.sql.TimeStamp
2. Calendar
3. DateFormat
- SimpleDateFormat
ps : - 为对应的实现类 即 java.sql.Date 继承于 java.util.Date
其中 Date类 主要用于显示日期类型,其为java1.0的类库,设计不合理(比如月份是从0开始 0月即对应 1月),大部分API 已弃用。
Calendar 类主要负责对日期的操作。
DateFromat 主要负责日期的格式化,如将固定格式的string日期转化为Date格式,将Date格式化为对应的string日期。
常用API:
1. java.util.Date 中的 after(), before() 方法比两个日期。
private static void testDateMethod() { /** * java.util.Date中的比较日期 * before() ; after() ; 方法 */ Date date1 = new Date(); date1.setTime(1510493100); //2017/11/12 21:25:0 Date date2 = new Date(); date2.setTime(1510488000); //2017/11/12 20:00:0 System.out.println("date1 before date2 :" + date1.before(date2)); //false System.out.println("date1 after date2 :" + date1.after(date2)); //true // x轴 0点到24点 前->后 // date1.after(date2) 可翻译为 date1在date2之后 }
2. Calendar 类操作日期:新增月份,日期
/** * 增加日期中某些类型的某数值 * @param date java.util * @param dateType * @param amount * @return java.date */ public static Date addInteger(Date date, int dateType, int amount) { Date myDate = null; if (date != null) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(dateType, amount); myDate = calendar.getTime(); } return myDate; }
3. DateSimpleDateFormat 日期格式化 Date -> String (format()方法)
/** * date -> string format方法 * * @param date * @return */ public static String utilDateToString(Date date) { String strDate = null; if (date != null) { SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); strDate = format.format(date); } return strDate; }
4. SimpleDateFormat : String -> Date (parse()方法)
/** * str -> date parse方法 * @param strDate * @param paternStr * @return */ public static Date stringToUtilDate(String strDate,String paternStr) { Date date; try { SimpleDateFormat format = new SimpleDateFormat(paternStr); date= format.parse(strDate); } catch (Exception e) { date = null; } return date; }
PS: UTC时间
UTC: 世界协调时间
GMT: 格林尼治标准时
UTC是给予原子钟的 比 GMT更精确
案例:
北京时区是东八区,领先UTC八个小时,在电子邮件信头的Date域记为+0800。
如果在电子邮件的信头中有这么一行:
Date: Fri, 08 Nov 2002 09:42:22 +0800
说明信件的发送地的地方时间是二○○二年十一月八号,星期五,早上九点四十二分(二十二秒),这个地方的本地时领先UTC八个小时(+0800, 就是东八区时间)。
电子邮件信头的Date域使用二十四小时的时钟,而不使用AM和PM来标记上下午