Java中的日期处理方法汇总
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中提供了丰富的日期处理方法,程序员可以根据具体需求选择合适的方法进行使用。
