目录
用java.text.SimpleDateFormat和java.util.Date来实现
前言
我们在编写代码时会对时间进行处理加减,我们在这里讲解几种时间类型的加减
用java.text.SimpleDateFormat和java.util.Date来实现
java.util.Date时间类型
java.util.Date是Java中常用的日期类型之一,用于表示特定的日期和时间。它包含日期和时间的信息,并可以进行日期的计算和操作。在SQL中,我们可以使用java.util.Date类型存储日期,并将其插入到数据库中
代码展示
Date d=new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
System.out.println("今天的日期:"+df.format(d));
System.out.println("两天前的日期:" + df.format(new Date(d.getTime() - 2 * 24 * 60 * 60 * 1000)));
System.out.println("三天后的日期:" + df.format(new Date(d.getTime() + 3 * 24 * 60 * 60 * 1000)));
运行结果
用Calendar来实现
什么是Calendar?
Calendar
类是 Java 中用于处理日期和时间的抽象类。它提供了一种独立于特定日历系统的方式来处理日期和时间。通过Calendar
类,你可以执行许多常见的日期和时间操作,如计算日期差异、添加或减去时间单位等。
Calendar calendar=Calendar.getInstance();
//把当前年份设置为2050年
calendar.set(Calendar.YEAR,2050);
//获取年份
int year =calendar.get(Calendar.YEAR);
System.out.println("年"+year);
//把当前月份设置为5月
calendar.set(Calendar.MONTH,5);
//再次获取月份
int month=calendar.get(Calendar.MONTH);
System.out.println("月"+month);
//设置日期为5
calendar.set(Calendar.DATE,5);
int date=calendar.get(Calendar.DATE);
System.out.println("日期"+date);
//把当前的年份增加两年
calendar.add(Calendar.YEAR,2);
//把当前的月份减少3个月
calendar.add(Calendar.MONTH,-3);
//获取
int year1=calendar.get(Calendar.YEAR);
int month1=calendar.get(Calendar.MONTH);
int date1=calendar.get(Calendar.DATE);
System.out.println("加2年减3个月");
System.out.println(year1+"年"+month1+"月"+date1+"日");
运行结果:
LocalDateTime时间:
为什么使用LocalDateTime?
- 和 SimpleDateFormat 相比,DateTimeFormatter 是线程安全的。
- Instant 的精确度更高,可以精确到纳秒级。
- Duration 可以便捷得到时间段内的天数、小时数等。
- LocalDateTime 能够快速地获取年、月、日、下一月等。
- TemporalAdjusters 类中包含许多常用的静态方法,避免自己编写工具类。
- 线程安全,计算功能强大,并且性能更好,代码更简洁。
import java.time.LocalDate;
import java.time.Period;
import java.util.ArrayList;
public class boke {
public static void main(String[] args) {
//先创建LocalDate对象
LocalDate localDate1 = LocalDate.of(2020, 1, 1);
LocalDate localDate2 = LocalDate.of(2022, 1, 1);
//再使用Period调用between方法,传给Period对象
Period period = Period.between(localDate1, localDate2);
//再使用period对象调用获取相应时间的方法
//获取相差的年份
int periodYears = period.getYears();
//获取相差的月份
int periodMonths = period.getMonths();
//获取相差的天数
int periodDays = period.getDays();
System.out.println("相差" + periodYears + "年" + periodMonths + "月" + periodDays + "日");
}
}
运行结果
使用with方法直接修改时间:
public static void main(String[] args) {
//先创建一个LocalDateTime对象:2021,11,11,13:14:15
LocalDateTime localDateTime = LocalDateTime.of(2021, 11, 11, 13, 14, 15);
//调用withYear()方法,参数传入想要修改成的时间,这里修改年份为2022
LocalDateTime newLocalDateTime1 = localDateTime.withYear(2022);
//再格式化一下
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String s = newLocalDateTime1.format(pattern);
System.out.println(s);
}
运行结果:2022-11-11 13:14:15
方法名 | 说明 |
publicLocalDateTime withYear(int year) | 直接修改年 |
publicLocalDateTime withMonth(int month) | 直接修改月 |
public LocalDateTime withDayOfMonth(int dayofmonth) | 直接修改日期(—个月中的第几天) |
public LocalDateTime withDayOfYear(int dayOfYear) | 直接修改日期(一—年中的第几天) |
public LocalDateTime withHour(int hour) | 直接修改小时 |
public LocalDateTime withMinute(int minute) | 直接修改分钟 |
public LocalDateTime withSecond(int second) | 直接修改秒 |
LocalDateTime增加或者减少时间的方法
public static void main(String[] args) {
//先创建一个LocalDateTime对象:2020,5,5,12:12:15
LocalDateTime localDateTime = LocalDateTime.of(2020, 5, 5, 12, 12, 15);
//用对象调用plusYears方法(也可以调用月、日、小时等等的方法)
LocalDateTime newLocalDateTime = localDateTime.plusYears(1);
//再格式化一下
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
String s = newLocalDateTime.format(pattern);
System.out.println(s);
}
运行结果: 2021年05月05日 12:12:15
总结到这里,有什么可以在评论区进行补充!