Java日期时间操作函数
Java语言中提供了很多日期时间操作函数,方便我们对日期和时间进行处理。下面就来介绍一下一些常用的函数。
1. 获取当前日期和时间
获取当前日期和时间可以使用java.util.Date类和java.util.Calendar类。
1)java.util.Date类
Date date = new Date();
以上代码可以获取当前日期和时间,但是Java官方文档中已经明确表示该类已经过时,建议改用java.time包中定义的java.time.Instant类来处理日期和时间。
2)java.util.Calendar类
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
以上代码可以获取当前的时间和日期,其中getInstance()方法返回的是当前的Calendar对象,cal.getTime()方法则可将其转换为Date类型的时间。
2. 时间格式化
时间格式化一般使用java.text.SimpleDateFormat类。
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = formatter.format(new Date());
以上代码将当前时间转换为指定格式的字符串,其中“yyyy-MM-dd HH:mm:ss”表示格式,将输出类似于“2021-08-30 15:07:23”的字符串。
3. 日期加减
日期加减可以使用java.util.Calendar类。
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.DATE, 1); //加一天
Date date = cal.getTime();
以上代码可以将原日期加上一天。使用add()方法可以进行加减, 个参数指定操作类型(如Calendar.DATE代表操作日期),第二个参数指定加减的数量。
4. 计算日期差值
计算日期差值可以使用java.time包中的java.time.Period类和java.time.Duration类。
1)java.time.Period类
Period类用于计算日期之间的差值。例如,要计算2021-08-30和2021-09-01之间相差的天数,可以使用以下代码:
LocalDate date1 = LocalDate.of(2021, 8, 30);
LocalDate date2 = LocalDate.of(2021, 9, 1);
Period period = Period.between(date1, date2);
int days = period.getDays();
以上代码将会得到相差的天数。
2)java.time.Duration类
Duration类用于计算时间差值。例如,要计算15:30和16:15之间相差的分钟数,可以使用以下代码:
LocalTime time1 = LocalTime.of(15, 30);
LocalTime time2 = LocalTime.of(16, 15);
Duration duration = Duration.between(time1, time2);
long minutes = duration.toMinutes();
以上代码将会得到相差的分钟数。
5. 时间戳转换
时间戳(timestamp)一般是指从某个固定时间点(如1970年1月1日00:00:00 UTC)开始所经过的秒数或者毫秒数。Java中可以使用java.time.Instant类将时间戳转换为日期时间对象,也可以将日期时间对象转换为时间戳。
// 将时间戳转换为日期时间对象
Instant instant = Instant.ofEpochMilli(System.currentTimeMillis());
ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
LocalDateTime ldt = zdt.toLocalDateTime();
// 将日期时间对象转换为时间戳
LocalDateTime localDateTime = LocalDateTime.now();
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
long timestamp = instant.toEpochMilli();
以上是常用的一些Java日期时间操作函数,可以根据不同的需求选择合适的函数进行处理。
