Java常用类-----日期类
Java8之前的有Date,Calendar,SimpleDateFormat
Java8之后的有LocalDate、LocalTime、LocalDateTime
1.Date类
Date d=new Date();
long x=d.getTime()//以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数 数据类型为long
2.Calendar类
定义对象格式:Calendar c = Calendar.getInstance();
获取时间的代码如下:
System.out.println("年: " + c.get(Calendar.YEAR));
System.out.println("月: " + c.get(Calendar.MONTH));
System.out.println("日: " + c.get(Calendar.DAY_OF_MONTH)+1);
System.out.println("时: " + c.get(Calendar.HOUR_OF_DAY));
System.out.println("分: " + c.get(Calendar.MINUTE));
System.out.println("秒: " + c.get(Calendar.SECOND));
设置时间:c.set(2021,09,09);
表示某时间之后的某一个日期:
c.add(Calendar.DAY_OF_YEAR, -30); //某天的30天之前
c.add(Calendar.YEAR, -3); //3年之前
System.out.println(c2.before(c)); //before表示c2之前的c
System.out.println(c2.before(c)); //after表示c2之后的c
3.SimpleDateFormat用于格式化日期格式
a.将字符串转为日期
public void stringToDate() throws ParseException {
String str = "2021-11-11 10:10:10";
SimpleDateFormat sdf=
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = sdf.parse(str);
System.out.println(date.getTime());
}
b.日期转化为字符串
public void dateToString() {
Date d = new Date();
long s =d.getTime();
Date x = new Date(s+330000000L);
System.out.println(x);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年-MM月-dd日 hh时:mm分:ss秒");
System.out.println(sdf.format(x));
}
应用:输入任意一个有效日期,打印是周几?
public void weekday() throws ParseException {
String str ="2021/05/01";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date d = sdf.parse(str);
Calendar c = Calendar.getInstance();
c.setTime(d);
int index = c.get(Calendar.DAY_OF_WEEK);
System.out.println(index);
//System.out.println(c.get(Calendar.DAY_OF_WEEK));
String[] weeks= {"","","星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
System.out.println(weeks[index]);
}
4.LocalDate(java8以后的)
获取当前日期:LocalDate date=LocalDate.now();
获取年月日:
public void test() {
LocalDate d = LocalDate.now();
System.out.println(d);
System.out.println("年:" + d.getYear());
System.out.println("月:" + d.getMonth());
System.out.println("月:" + d.getMonthValue());
System.out.println("日:" + d.getDayOfMonth());
LocalDate date2 =LocalDate.parse("2021-09-09"); //设置时间
System.out.println(d.isLeapYear()); //判断闰年
LocalDate x = d.plusDays(23); //加上23天后的日期
System.out.println(x);
}
日期比较:
使用compareTo()返回int类型
使用equals返回布尔类型
LocalDate和Date之间的类型转换
a.Date---->LocalDate
Date d=new Date();
LocalDate dt=d.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();//通过时区转换
System.out.println(dt);
b.LocalDate----->Date
ZoneDateTime zdt =LocalDate.now().atStartOfDay(ZoneId.systemDefault());
Date d =Date.from(zdt.toInstant());
System.out.println(d);
时间计算
5.Period类 表示一段时间的年、月、日
6.DateTimeFormat和SimpleDateFormat
SimpleDateFormat:线程不安全
DateTimeFormat:线程安全