(时间)时间戳、Date和Calendar大全
目录:
/** * 目录: * 一、时间戳 * 二、Date日期类 * 0、Date类创建 * 1、Date类的显示 * 2、Date类的比较大小 * 3、Date类的加减 * 三、Calendar日历类 * 0、Calendar类的创建 * 1、Calendar类的显示 * 2、Calendar的设置时间 * 3、Calendar的加减 * 四、三者转化 * 1、时间戳和Date类转化 * 2、时间戳和Calendar类转化 * 3、Date类和Calendar类转化 */ public static void main(String[] args) { /** * 一、时间戳【1970年01月01日到当前时间的毫秒数】 */ System.out.println("------时间戳------"); System.out.println("system方式当前时间戳:" + System.currentTimeMillis()); // 最快 System.out.println("date方式当前时间戳:" + new Date().getTime()); // 对system方式的封装 System.out.println("calendar方式当前时间戳:" + Calendar.getInstance().getTimeInMillis()); // 最慢,要对时区进行处理 /** * 二、Date 日期类 */ System.out.println("------Date 日期类------"); // 0、Date类的创建 Date dateNow = new Date(); // 创建Date对象,还有Date(long time)构造方法,里面放入的是从1970年1月1日开始到现在的毫秒数 // 1、Date类的显示 System.out.println("未格式化日期对象:" + dateNow); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("格式化日期对象:" + simpleDateFormat.format(dateNow)); // 具体格式可自定义 // 2、Date类的比较大小 // (1)Date类实现了Comparable接口,可以直接使用compareTo()方法比较大小 Date dateOne = new Date(); int type = dateNow.compareTo(dateOne); if (type == 0) { System.out.println("dateNow与dateOne相等!"); } else if (type > 0){ System.out.println("dateNow在dateOne之后!"); } else { System.out.println("dateNow在dateOne之前!"); } // (2)通过Date类自带的before()或者after()方法比较 Date dateTwo = new Date(); if (dateNow.before(dateTwo)) { System.out.println("dateNow在dateTwo之前!"); } else if (dateNow.after(dateTwo)){ System.out.println("dateNow在dateTwo之后!"); } else { System.out.println("dateNow与dateTwo相等!"); } // (3)调用Date类的getTime()方法获取毫秒数比较 Date dateThree = new Date(); if (dateNow.getTime() == dateThree.getTime()) { System.out.println("dateNow与dateThree相等!"); } else if (dateNow.getTime() < dateThree.getTime()){ System.out.println("dateNow在dateThree之前!"); } else { System.out.println("dateNow在dateThree之后!"); } // 3、Date的加减 (以当前时间的三天前时间为例) long timeNow = dateNow.getTime(); long oneDayTime = 1000 * 60 * 60 * 24L; System.out.println("当前时间:" + simpleDateFormat.format(dateNow)); Date dateNowBeforeThree = new Date(timeNow - oneDayTime * 3); System.out.println("三天前的时间:" + simpleDateFormat.format(dateNowBeforeThree)); /** * 三、Calendar日历类 */ System.out.println("------Calendar 日历类------"); // 0、Calendar类的创建 Calendar nowCalendar = Calendar.getInstance(); // calendar是一个接口,不可以实例化,使用静态方法getinstance()创建实例 // 1、Calendar类的显示 System.out.println("未格式化的日历对象:" + nowCalendar); formatCalendar("格式化的日历对象:", nowCalendar); // 2、Calendar的设置时间 Calendar myCalendar01 = Calendar.getInstance(); // (1)构造方式设置 // 如果想设置为某个日期,可以依次设置年月日时分秒,由于月份下标从0开始赋值月份要-1【故推荐直接使用枚举】 myCalendar01.set(2022, Calendar.JANUARY, 1, 25, 1, 1); // 如果超过当前位置最大数,会自动进位,如25小时 formatCalendar("构造方式设置Calendar:", myCalendar01); // (2)set方式设置 Calendar myCalendar02 = Calendar.getInstance(); myCalendar02.set(Calendar.YEAR, 2022); myCalendar02.set(Calendar.MONTH, Calendar.JANUARY); // 由于月份下标从0开始赋值月份要-1【故推荐直接使用枚举】 myCalendar02.set(Calendar.DAY_OF_MONTH, 12); // 时分秒同理,此处省略 formatCalendar("set方式设置Calendar:", myCalendar02); // 3、Calendar的加减 // (1)使用add()方法(一天前为例) nowCalendar = Calendar.getInstance(); nowCalendar.add(Calendar.DAY_OF_MONTH, -1); formatCalendar("Calendar的一天前:", nowCalendar); // (2)使用set()方法(一天前为例) nowCalendar = Calendar.getInstance(); nowCalendar.set(Calendar.DAY_OF_MONTH, nowCalendar.get(Calendar.DAY_OF_MONTH) - 1); formatCalendar("Calendar的一天前", nowCalendar); /** * 四、三者转化 */ long transformTimeMillis00 = System.currentTimeMillis(); Date transformDate00 = new Date(); Calendar transformCalendar00 = Calendar.getInstance(); // 1、时间戳和Date类转化 System.out.println("1、时间戳转Date为:" + new Date(transformTimeMillis00)); System.out.println("1、Date转时间戳为:" + transformDate00.getTime()); // 2、时间戳和Calendar类转化 Calendar transformCalendar11 = Calendar.getInstance(); transformCalendar11.setTimeInMillis(transformTimeMillis00 - 1000*60*60); // 时间戳转Calendar System.out.println("2、时间戳转Calendar为:" + transformCalendar11); System.out.println("2、Calendar转时间戳为:" + transformCalendar11.getTimeInMillis()); // 3、Date类和Calendar类转化 Calendar transformCalendar22 = Calendar.getInstance(); transformCalendar22.setTime(new Date()); System.out.println("3、Date转Calendar为:" + transformCalendar22); System.out.println("3、Calendar转Date为:" + transformCalendar22.getTime()); } /** * 格式输出Calendar日历类 * @param message 输出提示 * @param calendar 待格式化的日历类 */ private static void formatCalendar(String message, Calendar calendar) { int myYear = calendar.get(Calendar.YEAR); int myMonth = calendar.get(Calendar.MONTH) + 1; // 外国的月份是 0-11,故月份需要加1 int myDay = calendar.get(Calendar.DAY_OF_MONTH); int myWeekDay = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 外国一周是从周日开始的,故星期需要减1,并对周日做特殊处理 if (myWeekDay == 0) { myWeekDay = 7; } int myHour = calendar.get(Calendar.HOUR); int myMinute = calendar.get(Calendar.MINUTE); int mySecond = calendar.get(Calendar.SECOND); System.out.println(message + myYear + "年" + myMonth + "月" + myDay + "日" + " " + myHour + ":" + myMinute + ":" + mySecond + " " + "星期" + myWeekDay); }
小编不易,可否来个三连,赏个赞也是好的呀!!!
博客参考:
简析date和calendar的用法:https://www.cnblogs.com/sw-123/p/9338624.html
java中Date日期类型的大小比较:https://blog.csdn.net/lz199719/article/details/81261336
Java中Calendar类的常用方法:https://blog.csdn.net/yx0628/article/details/79317440