java 之日期时间操作
package com.gongxy.demo; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * Date 时间类 * Calendar 时间操作类 * SimpleDateFormat 时间格式化类 */ public class DateTest { public static void main(String[] args) { simpleDateFormat(); } /** * compareTo[比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。] * equals[当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。] * toString[把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。] */ static void dateTest(){ Date d = new Date(); System.out.println(d);//国际时间格式 [Tue Aug 11 22:31:14 CST 2020] Date d1 = new Date(1000); int result = d.compareTo(d1); System.out.println(result);//[1] boolean bResult = d.equals(d1); System.out.println(bResult);//false Date dNow = new Date(); result = d.compareTo(dNow); System.out.println(result);//生成时间的误差,会导致dNow晚于d一点时间[-1] bResult = d.equals(dNow); System.out.println(bResult);//false Date d2 = d; result = d.compareTo(d2); System.out.println(result);//[0] bResult = d.equals(d2); System.out.println(bResult);//true int hashCode = d.hashCode(); System.out.println(hashCode);//-570822014 System.out.println(d.toString());//[Tue Aug 11 22:45:18 CST 2020] } /** * Calendar * getTime() 当前时间 * get() 取 * set() 设置 * add() 运算 */ static void calendarTest(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); //cal.getTime() Date[返回当前时间] System.out.println(sdf.format(cal.getTime()));//2020-08-12 23:38:26 //取值 int r1 = cal.get(Calendar.YEAR);//2020 [年] r1 = cal.get(Calendar.MONTH);//7 [获取的月份需要+1 (0,1,2,3,4,5,6,7,8,9,10,11)] r1 = cal.get(Calendar.DATE);//12 [日] r1 = cal.get(Calendar.HOUR);//11 [时(12小时制)] r1 = cal.get(Calendar.HOUR_OF_DAY);//23 [时(24小时制)] r1 = cal.get(Calendar.MINUTE);//18 [分] r1 = cal.get(Calendar.SECOND);//20 [秒] r1 = cal.get(Calendar.DAY_OF_WEEK);//4 [1周日 2周一 3周二 4周三 5周四 6周五 7周六] //设置值 cal.set(2019, 6, 19, 14, 23, 59); System.out.println(sdf.format(cal.getTime()));//2019-07-19 14:23:59 cal.set(Calendar.YEAR, 2018);//2018年 cal.set(Calendar.MONTH, 0);//0 [一月] cal.set(Calendar.DATE, 1);//1号 cal.set(Calendar.HOUR_OF_DAY, 14);//14时 cal.set(Calendar.MINUTE, 12);//12分 cal.set(Calendar.SECOND, 12);//12秒 System.out.println(sdf.format(cal.getTime()));//2018-01-01 14:12:12 //运算值 cal.add(Calendar.YEAR, -1); cal.add(Calendar.MONTH, -1); cal.add(Calendar.DATE, 1); cal.add(Calendar.HOUR_OF_DAY, 1); cal.add(Calendar.MINUTE, 10); cal.add(Calendar.SECOND, 10); System.out.println(sdf.format(cal.getTime()));//2016-12-02 15:22:22 } /** * SimpleDateFormat函数语法: * G 年代标志符 * y 年 * M 月 * d 日 * h 时 在上午或下午 (1~12) * H 时 在一天中 (0~23) * m 分 * s 秒 * S 毫秒 * E 星期 * D 一年中的第几天 * F 一月中第几个星期几 * w 一年中第几个星期 * W 一月中第几个星期 * a 上午 / 下午 标记符 * k 时 在一天中 (1~24) * K 时 在上午或下午 (0~11) * z 时区 */ static void simpleDateFormat(){ //String strDateFormat = "yyyy-MM-dd HH:mm:ss E"; String strDateFormat = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); Date d = new Date(); System.out.println(sdf.format(d));//2020-08-12 23:51:57 星期三 String studyD = "2020-08-14 22:55:23"; try { Date dStudy = sdf.parse(studyD); System.out.println(dStudy);//Fri Aug 14 22:55:23 CST 2020 } catch (ParseException e) { e.printStackTrace(); } } }