1.Date类,jdk1.0,jdk1.1之后由Calender进行代替
类 Date 表示特定的瞬间,精确到毫秒。
它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。
Date类的简单使用:
Date date = new Date();
System.out.println(date.toString());
2.Calender,jdk1.1
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR 、MONTH 、DAY_OF_MONTH 、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。?
与其他语言环境敏感类一样,Calendar 提供了一个类方法 getInstance ,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:
Calendar rightNow = Calendar.getInstance();
?Calendar 的简单使用方式:
Calendar instance = Calendar.getInstance();
Date now = instance.getTime();
System.out.println("now = " + now);
日期计算
Calendar yesterday = Calendar.getInstance();
//日期简单加减
// 去昨天
yesterday.set(Calendar.DAY_OF_MONTH, yesterday.get(Calendar.DAY_OF_MONTH) - 1);
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(yesterday.getTime()));
Calendar tomorrow = Calendar.getInstance();
// 去明天
tomorrow.set(Calendar.DAY_OF_MONTH, tomorrow.get(Calendar.DAY_OF_MONTH) + 1);
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tomorrow.getTime()));
// 两个时间的间隔
long interval = tomorrow.getTime().getTime() - yesterday.getTime().getTime();
System.out.println("间隔:" + interval + "毫秒");
3.LocalDateTime,jdk1.8
LocalDateTime 是一个不可变的日期时间对象,代表日期时间,通常被视为年 - 月 - 日 - 时 - 分 - 秒。 也可以访问其他日期和时间字段,例如日期,星期几和星期。 时间表示为纳秒精度。
这个类是不可变的和线程安全的。
LocalDateTime的简单使用:
LocalDateTime now = LocalDateTime.now();
System.out.println("now = " + now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
日期计算
LocalDateTime now = LocalDateTime.now();
System.out.println("现在 = " + now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//去昨天
LocalDateTime yesterday = now.minusDays(1);//==now.addDays(-1)
System.out.println(yesterday.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//去明天
LocalDateTime tomorrow = now.plusDays(1);
System.out.println(tomorrow.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//计算时间间隔
long day = yesterday.until(tomorrow, ChronoUnit.DAYS);
System.out.println("day = " + day);
|