文章目录
一、日期的获取
1.java.util.Date
最简单的获取日期的方法,通过实例化Date类,来获取时间。
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(formatter.format(date));
输出日期格式:
2022-09-02 09:45:41
2.System.currentTimeMillis()
返回当前系统的时间戳,不受时区的影响。
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(formatter.format(new Date(System.currentTimeMillis())));
返回日期格式:
2022-09-02 09:53:59
3.java.util.Calendar
通过实例化Calendar类获取时间
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar caldate = Calendar.getInstance();
System.out.println(formatter.format(caldate.getTime()));
返回日期格式
2022-09-02 09:56:31
4.Locale相关API(java8新增)
1.LocalDate 表示一个本地的日期,而不包含时间部分(没有时区信息),返回标准日期格式(只有日期)
System.out.println(LocalDate.now());
返回时间类型
2022-09-02
2.LocalTime.now() 返回标准时间格式(只有时间)
System.out.println(LocalTime.now());
返回时间类型
10:02:22.650142400
3.LocalDateTime.now() 返回标准日期+时间
LocalDateTime local = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-dd-MM HH:mm:ss");
System.out.println(formatter.format(local));
返回时间类型
2022-02-09 10:09:50
二、日期操作
1.日期格式化
SimpleDataFormat与DataTimeFormatter
SimpleDataFormat不能轻易作为全局变量在多线程环境下使用,它是线程不安全的.
DataTimeFormatter 是java8新功能,是线程安全的,推荐使用。
LocalDateTime local = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-dd-MM HH:mm:ss");
String date = formatter.format(local);
SimpleDateFormat format = new SimpleDateFormat("yyyy-dd-MM HH:mm:ss");
String date2 = formatter.format(local);
System.out.println(date);
System.out.println(date2);
二者返回的日期格式是一样的:
2022-02-09 14:12:04
2022-02-09 14:12:04
2.日期加减
1.使用Calendar类处理:
Calendar类支持设置某一日期,并对此日期进行加减处理。
加减处理的时候需要注意:月份在Calendar中是0-11,因此设置日期时需要-1
Calendar的roll方法可以对指定的年月日进行加减操作
int year = 2008;
int month = 8;
int day = 8;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,year);
calendar.set(Calendar.MONTH,month-1);//月份-1
calendar.set(Calendar.DAY_OF_MONTH,day);
calendar.roll(Calendar.YEAR,-1);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String date = format.format(calendar.getTime());
System.out.println(date);
输出日期:
2007-08-08
3.天数计算
1.使用Date获取时间
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date beginDate = format.parse("2008-08-08");
Date endDate = format.parse("2022-08-08");
long day =(endDate.getTime()-beginDate.getTime())/(24*60*60*1000);
System.out.println("相隔的天数="+day);