欢迎访问宙启技术站
智能推送

Java中的日期处理方法汇总

发布时间:2023-05-31 07:11:08

Java是一种面向对象的编程语言,它提供了一系列的日期处理方法,可以在开发中非常方便的处理日期和时间。下面我们来详细了解Java中的日期处理方法。

一、Date类

Date类是java.util包中的类,它代表一个标准的时间戳(自1970年1月1日起的毫秒数),可以用于表示任何日期和时间,包括生日、纪念日、过去和未来的事件等。下面是Date类常用的方法。

1. 获取当前时间

Date date = new Date();

2. 根据日期和时间生成timestamp

long ts = date.getTime();

3. 根据timestamp生成Date

Date date = new Date(ts);

4. 判断两个时间是否相等

boolean equals(Object obj);

5. 比较时间

int compareTo(Date anotherDate);

6. 获取哈希码

int hashCode();

7. 将时间转换为字符串

String toString();

8. 将当前时间格式化为字符串

String format = "yyyy年MM月dd日 HH:mm:ss";

SimpleDateFormat sdf = new SimpleDateFormat(format);

String str = sdf.format(new Date());

9. 将字符串转换为时间

String str = "2021-09-15";

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Date date = sdf.parse(str);

10. 将时间转换为UTC时间

long ms = date.getTime();

String str = String.format("/Date(%d)/", ms);

二、Calendar类

Calendar是java.util包中的一个抽象类,它提供了一种日期处理方法,可以用来获取、设置、计算日期。下面是Calendar类常用的方法。

1. 获取Calendar实例

Calendar cal = Calendar.getInstance();

2. 获取指定时间的calendar实例

cal.setTime(date);

3. 获取年份

int year = cal.get(Calendar.YEAR);

4. 获取月份

int month = cal.get(Calendar.MONTH) + 1;

5. 获取日

int day = cal.get(Calendar.DAY_OF_MONTH);

6. 获取小时

int hour = cal.get(Calendar.HOUR_OF_DAY);

7. 获取分钟

int minute = cal.get(Calendar.MINUTE);

8. 获取秒

int second = cal.get(Calendar.SECOND);

9. 获取毫秒

int ms = cal.get(Calendar.MILLISECOND);

10. 获取某月的天数

int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

三、SimpleDateFormat类

SimpleDateFormat是java.text包中的类,它可以将日期格式化为指定的格式,并且可以将字符串解析为某种日期格式。下面是SimpleDateFormat常用的方法。

1. 格式化日期

String format = "yyyy年MM月dd日 HH:mm:ss";

SimpleDateFormat sdf = new SimpleDateFormat(format);

Date date = new Date();

String str = sdf.format(date);

2. 解析日期

String str = "2021-09-15";

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Date date = sdf.parse(str);

3. 获取DateFormat实例

DateFormat df = DateFormat.getDateTimeInstance();

4. 获取默认设置的DateFormat实例

DateFormat df = DateFormat.getDateInstance();

四、Instant类

Instant是java.time包中的一个类,它可以精确到纳秒级别的时间处理类。下面是Instant常用的方法。

1. 按当前时间获取Instant实例

Instant instant = Instant.now();

2. 根据毫秒值获取Instant实例

Instant instant = Instant.ofEpochMilli(System.currentTimeMillis());

3. 判断两个时间是否相等

boolean equals(Object obj);

4. 获取差距

Duration duration = Duration.between(instant1, instant2);

long diff = duration.toMillis();

五、LocalDateTime类

LocalDateTime是java.time包中的类,它可以表示具有日期和时间的时间点,且没有时区信息。下面是LocalDateTime常用的方法。

1. 获取当前时间

LocalDateTime now = LocalDateTime.now();

2. 根据时间创建LocalDateTime实例

LocalDateTime localDateTime = LocalDateTime.of(year, month, day, hour, minute, second);

3. 格式化时间

String format = "yyyy年MM月dd日 HH:mm:ss";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);

String str = now.format(formatter);

4. 解析时间

String str = "2021-09-15 22:10:30";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

LocalDateTime localDateTime = LocalDateTime.parse(str, formatter);

六、ZonedDateTime类

ZonedDateTime是java.time包中的类,它扩展了LocalDateTime类,可以包含时区信息。下面是ZonedDateTime常用的方法。

1. 获取当前时间

ZonedDateTime now = ZonedDateTime.now();

2. 根据时区创建ZonedDateTime实例

ZoneId zoneId = ZoneId.of("Asia/Shanghai");

ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId);

3. 格式化时间

String format = "yyyy年MM月dd日 HH:mm:ss z";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);

String str = zonedDateTime.format(formatter);

4. 解析时间

String str = "2021-09-15 22:10:30 CST";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");

ZonedDateTime zonedDateTime = ZonedDateTime.parse(str, formatter);

总之,Java中提供了丰富的日期处理方法,程序员可以根据具体需求选择合适的方法进行使用。