一、Date
/*
* Date类
* 1.java.util.Date
* 2.Date --> long , long --> Date
*/
public class DateDemo {
public static void main(String[] args) {
//获得当前时间
Date now = new Date();
//Date --> long
long nowTime = now.getTime();
System.out.println("now = "+now);
System.out.println("nowTime = "+nowTime);
System.out.println("-------------------");
//获得当前时间
long l = System.currentTimeMillis();
//long --> Date
Date date = new Date(l);
System.out.println("l = "+l);
System.out.println("date = "+date);
}
}
运行结果:
now = Tue Oct 19 20:28:01 CST 2021
nowTime = 1634646481106
-------------------
l = 1634646481134
date = Tue Oct 19 20:28:01 CST 2021Process finished with exit code 0
二、Calendar
/* Calendar
* 1.java.util.Calendar类
* 2.get(常量) 获取年月日、时分秒、星期
* 3.set(常量,值) 设置年月日、时分秒、星期
* 4.add(常量,值) 追加指定的时间
*/
public class CalendarDemo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
get(c);
System.out.println(set(c,2000,6,9));
add(c , 1);
}
//获取年月日、时分秒、星期
public static void get(Calendar c){
//get(日历类的常量)
System.out.println("年:"+c.get(Calendar.YEAR));
System.out.println("月:"+(c.get(Calendar.MONTH)+1));
System.out.println("日:"+c.get(Calendar.DAY_OF_MONTH));
System.out.println("时:"+c.get(Calendar.HOUR));
System.out.println("分:"+c.get(Calendar.MINUTE));
System.out.println("秒:"+c.get(Calendar.SECOND));
System.out.println(getWeek(c.get(Calendar.DAY_OF_WEEK)));
}
//设置年月日
public static Calendar set(Calendar c,int year,int month,int day){
//set(日历类的常量 ,设置的时间数据 )
//设置年
c.set(Calendar.YEAR , year);
//设置月
c.set(Calendar.MONTH , month-1);
//设置日期
c.set(Calendar.DAY_OF_MONTH , day);
//根据指定的年月日,输出对应的星期
System.out.println(getWeek(c.get(Calendar.DAY_OF_WEEK)));
return c;
}
//追加时间
public static void add(Calendar c,int month){
//追加指定的时间 add(追加的时间单位 , 追加的时间数据)
c.add(Calendar.MONTH , month);
System.out.println("年:"+c.get(Calendar.YEAR));
System.out.println("月:"+(c.get(Calendar.MONTH)+1));
System.out.println("日:"+c.get(Calendar.DAY_OF_MONTH));
System.out.println(getWeek(c.get(Calendar.DAY_OF_WEEK)));
}
public static String getWeek(int w){ //w 1-7
String[] weeks = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
// 0 1 2 3 4 5 6
return weeks[w-1];
}
}
运行结果:
年:2021
月:10
日:19
时:8
分:29
秒:11
星期二
星期五
java.util.GregorianCalendar[time=960553751457,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2000,MONTH=5,WEEK_OF_YEAR=24,WEEK_OF_MONTH=2,DAY_OF_MONTH=9,DAY_OF_YEAR=161,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=8,HOUR_OF_DAY=20,MINUTE=29,SECOND=11,MILLISECOND=457,ZONE_OFFSET=28800000,DST_OFFSET=0]
年:2000
月:7
日:9
星期日
三、LocalDate
/* LocalDate类、LocalDateTime类、LocalTime类
* 1.java.time.LocalDate
* 2.JDK1.8后,线程安全的时间类
*/
public class LocalDateDemo {
public static void main(String[] args) {
//static LocalDate now() 获取当期时间
LocalDate now = LocalDate.now();
System.out.println("now = "+now);
//static LocalDate of(int year, int month, int dayOfMonth) 设置年月日
LocalDate localDate = LocalDate.of(2019, 9, 9);
System.out.println("localDate = "+localDate);
//int compareTo(ChronoLocalDate other) 将此日期与另一个日期进行比较。
System.out.println("compareTo = "+localDate.compareTo(now));
//boolean equals(Object obj) 检查此日期是否等于另一个日期。
System.out.println("equals = "+now.equals(localDate));
System.out.println("==============getXxx()获取日期===================");
//int getDayOfMonth() 获取月字段的一天
System.out.println("一个月中的第"+now.getDayOfMonth()+"天");
//DayOfWeek getDayOfWeek() 获取星期域,这是一个枚举 DayOfWeek。
System.out.println("星期:"+now.getDayOfWeek());
//int getDayOfYear() 获取一年的日子。
System.out.println("一年中的第"+now.getDayOfYear()+"天");
//int getMonthValue() 从1到12得到一个月的时间字段。
System.out.println("月份:"+now.getMonthValue());
//int getYear() 获取年度字段。
System.out.println("年:"+now.getYear());
//boolean isLeapYear() 检查,如果今年是闰年,根据ISO预期历法系统规则。
System.out.println(now.isLeapYear()); //false不是闰年
System.out.println(localDate.isLeapYear());
System.out.println("-----------获取月份长度/年份长度--------------");
//int lengthOfMonth() 返回此日期所表示的月份的长度。
//int lengthOfYear() 返回此日期所表示的年份的长度。
System.out.println("localDate指定的月份的长度"+localDate.lengthOfMonth());
System.out.println("now指定的年份的长度"+now.lengthOfYear());
System.out.println("-----------minus减去 / plus加上--------------");
//LocalDate minus(long amountToSubtract, TemporalUnit unit) 返回此日期的一个副本,用指定的金额减去。
//LocalDate minusDays(long daysToSubtract) 返回一份本 LocalDate与指定的天数减去。
//LocalDate minusMonths(long monthsToSubtract) 返回一份本 LocalDate与指定期个月减去。
//LocalDate minusWeeks(long weeksToSubtract) 返回一份本 LocalDate在周中减去指定的时间。
//LocalDate minusYears(long yearsToSubtract) 返回一份本 LocalDate与指定期在年中减去。
System.out.println("将now时间减去一年:"+now.minusYears(1));
//minus(时间的数据 , 时间单位)
System.out.println(now.minus(9, ChronoUnit.DAYS)); //ChronoUnit.DAYS 天数
//LocalDate plus(long amountToAdd, TemporalUnit unit) 返回此日期的一个副本,添加指定的金额
//LocalDate plusDays(long daysToAdd) 返回一份本 LocalDate与指定的天数增加。
//LocalDate plusMonths(long monthsToAdd) 返回一份本 LocalDate在月期添加指定的。
//LocalDate plusWeeks(long weeksToAdd) 返回一份本 LocalDate在周指定期间补充。
//LocalDate plusYears(long yearsToAdd) 返回一份本 LocalDate年指定期间补充。
System.out.println("将now时间加上一个星期:"+now.plusWeeks(1));
//plus(时间的数据, 时间单位)
System.out.println(now.plus(3,ChronoUnit.YEARS)); //ChronoUnit.YEARS 年份
System.out.println("-----------parse 解析器--------------");
//static LocalDate parse(CharSequence text) 获得 LocalDate实例从一个文本字符串,如 2007-12-03。
LocalDate parse1 = LocalDate.parse("2019-09-09");
System.out.println("parse1 = "+parse1);
//static LocalDate parse(CharSequence text, DateTimeFormatter formatter) 获得 LocalDate实例从使用特定格式的文本字符串。
LocalDate parse2 = LocalDate.parse("2020/12/12", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
System.out.println("parse2 = "+parse2);
//long toEpochDay() 将此日期转换为新纪元日。
System.out.println("toEpochDay() : "+now.toEpochDay());
//String toString() 输出该日期作为 String,如 2007-12-03。
System.out.println("toString():"+now.toString());
//long until(Temporal endExclusive, TemporalUnit unit) 计算时间的量,直到指定单元的另一个日期为止。
System.out.println("计算指定日期的差值:"+now.until(localDate ,ChronoUnit.DAYS));
System.out.println("--------------with 替换时间----------------");
//LocalDate with(TemporalField field, long newValue) 将此日期的一个副本与指定的字段设置为一个新值。
//LocalDate withDayOfMonth(int dayOfMonth) 返回此日期的副本与月更改日期。
//LocalDate withDayOfYear(int dayOfYear) 返回此日期的副本与一年的日期更改。
//LocalDate withMonth(int month) 返回此日期的副本与更改的月份。
//LocalDate withYear(int year) 返回此日期的副本与年更改。
System.out.println("now = "+now);
System.out.println("withYear替换年 = "+now.withYear(2020));
System.out.println("withMonth替换月 = "+now.withMonth(3));
System.out.println("withDayOfMonth替换日 = "+now.withDayOfMonth(21));
}
}
运行结果:
now = 2021-10-19
localDate = 2019-09-09
compareTo = -2
equals = false
==============getXxx()获取日期===================
一个月中的第19天
星期:TUESDAY
一年中的第292天
月份:10
年:2021
false
false
-----------获取月份长度/年份长度--------------
localDate指定的月份的长度30
now指定的年份的长度365
-----------minus减去 / plus加上--------------
将now时间减去一年:2020-10-19
2021-10-10
将now时间加上一个星期:2021-10-26
2024-10-19
-----------parse 解析器--------------
parse1 = 2019-09-09
parse2 = 2020-12-12
toEpochDay() : 18919
toString():2021-10-19
计算指定日期的差值:-771
--------------with 替换时间----------------
now = 2021-10-19
withYear替换年 = 2020-10-19
withMonth替换月 = 2021-03-19
withDayOfMonth替换日 = 2021-10-21Process finished with exit code 0