使用Java中的时间日期类实现时间转换和计算时间差
发布时间:2023-06-25 10:54:10
Java中的时间日期类是用于处理日期和时间相关操作的类,它包括多个子类,如Date、DateFormat、Calendar、SimpleDateFormat等,本文将介绍如何使用Java中的时间日期类来实现时间转换和计算时间差。
一、时间转换
1. 使用Date类来进行时间转换
Date类是Java中用于表示时间的基础类,它提供了多种构造函数可以创建当前时间、指定时间等不同的时间对象,也提供了多种方法可以对时间进行格式化输出。下面是使用Date类实现时间转换的示例代码:
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
//当前时间
dateTostring(new Date());
//指定时间
String dateString = "2021-09-09 10:10:10";
Date date = stringToDate(dateString, "yyyy-MM-dd HH:mm:ss");
dateTostring(date);
}
//日期格式化输出
private static void dateTostring(Date date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = simpleDateFormat.format(date);
System.out.println(format);
}
//字符串转日期
private static Date stringToDate(String dateString, String pattern) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
try {
Date date = simpleDateFormat.parse(dateString);
return date;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
2. 使用LocalDateTime类来进行时间转换
Java8中提供了新的时间日期API,其中LocalDateTime类是用于表示日期时间的类,它提供了多种方法可以对日期时间进行操作,包括日期转换、日期比较、日期加减等,下面是使用LocalDateTime类实现时间转换的示例代码:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class LocalDateTimeTest {
public static void main(String[] args) {
//当前时间
LocalDateTime now = LocalDateTime.now();
LocalDateTimeToString(now);
//指定时间
String dateString = "2021-09-09 10:10:10";
LocalDateTime dateTime = stringToLocalDateTime(dateString, "yyyy-MM-dd HH:mm:ss");
LocalDateTimeToString(dateTime);
}
//日期格式化输出
private static void LocalDateTimeToString(LocalDateTime dateTime) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(dateTimeFormatter.format(dateTime));
}
//字符串转日期
private static LocalDateTime stringToLocalDateTime(String dateString, String pattern) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
LocalDateTime dateTime = LocalDateTime.parse(dateString, dateTimeFormatter);
return dateTime;
}
}
二、计算时间差
1. 使用Date类来计算时间差
计算两个时间差可以使用Date类中getTime()方法来获取两个时间差的毫秒数,然后再将毫秒数转换为秒、分、时、天等格式输出,下面是使用Date类计算时间差的示例代码:
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
String dateString1 = "2021-09-09 10:10:10";
String dateString2 = "2021-09-10 11:11:11";
Date date1 = stringToDate(dateString1, "yyyy-MM-dd HH:mm:ss");
Date date2 = stringToDate(dateString2, "yyyy-MM-dd HH:mm:ss");
long diff = date2.getTime() - date1.getTime();
long seconds = diff / 1000;
long minutes = seconds / 60;
long hours = minutes / 60;
long days = hours / 24;
System.out.println("相差了" + days + "天" + hours % 24 + "小时" + minutes % 60 + "分钟" + seconds % 60 + "秒");
}
//字符串转日期
private static Date stringToDate(String dateString, String pattern) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
try {
Date date = simpleDateFormat.parse(dateString);
return date;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
2. 使用LocalDateTime类来计算时间差
与计算时间差类似,使用LocalDateTime类计算时间差也是通过计算时间差的毫秒数来实现,具体实现方式和使用Date类相似,下面是使用LocalDateTime类实现时间差计算的示例代码:
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
public class LocalDateTimeTest {
public static void main(String[] args) {
String dateString1 = "2021-09-09 10:10:10";
String dateString2 = "2021-09-10 11:11:11";
LocalDateTime dateTime1 = stringToLocalDateTime(dateString1, "yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime2 = stringToLocalDateTime(dateString2, "yyyy-MM-dd HH:mm:ss");
long diff = ChronoUnit.SECONDS.between(dateTime1, dateTime2);
long seconds = diff % 60;
long minutes = diff / 60 % 60;
long hours = diff / (60 * 60) % 24;
long days = diff / (60 * 60 * 24);
System.out.println("相差了" + days + "天" + hours + "小时" + minutes + "分钟" + seconds + "秒");
}
//字符串转日期
private static LocalDateTime stringToLocalDateTime(String dateString, String pattern) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
LocalDateTime dateTime = LocalDateTime.parse(dateString, dateTimeFormatter);
return dateTime;
}
}
三、总结
本文介绍了Java中时间日期类的使用方法,包括时间转换和计算时间差,提供了不同类的示例代码,希望能帮助读者更好地理解Java中时间相关类的使用方法,实现时间转换和计算时间差的功能。
