Java中时间转换主要是以下几种情形
String格式时间转换为Date,LocalDateTime,LocalDate,LocalTime
时间戳转换为Date,LocalDateTime,LocalDate,LocalTime
Date,LocalDateTime,LocalDate,LocalTime转换为String格式时间
Date,LocalDateTime,LocalDate转换为时间戳
Date,LocalDateTime,LocalDate,LocalTime之间的相互转换
具体的转换详细情况如下:
String格式时间转换为Date,LocalDateTime,LocalDate,LocalTime
String source2 = "2022-03-23 12:45:35";
// String转各种时间
// 匹配规则写法
DateTimeFormatter localDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter localDateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter localDateFormatter_short = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter localTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter localTimeFormatter_short = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalDateTime localDateTime3 = LocalDateTime.parse("2022-03-23 12:45:35", localDateTimeFormatter);
System.out.println("String格式时间转换为LocalDateTime: "+localDateTime3);
// String-->LocalDate
// 字符串是长格式yyyy-MM-dd HH:mm:ss,匹配规则也该是yyyy-MM-dd HH:mm:ss
LocalDate localDate2 = LocalDate.parse("2022-03-23 12:45:35", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("String格式时间转换为LocalDate: yyyy-MM-dd HH:mm:ss--> "+localDate2);
// 字符串是短格式yyyy-MM-dd,匹配规则也该是yyyy-MM-dd
LocalDate localDate_short = LocalDate.parse("2022-03-23", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("String格式时间转换为LocalDate: yyyy-MM-dd --> "+localDate_short);
// String-->LocalTime
// 字符串是短格式yyyy-MM-dd,匹配规则也该是yyyy-MM-dd
LocalTime localTime1 = LocalTime.parse("2022-03-23 12:45:35", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("String格式时间转换为LocalTime: yyyy-MM-dd HH:mm:ss --> "+localTime1);
// 字符串是短格式yyyy-MM-dd,匹配规则也该是yyyy-MM-dd
LocalTime localTime_short = LocalTime.parse("12:45:35", DateTimeFormatter.ofPattern("HH:mm:ss"));
System.out.println("String格式时间转换为LocalTime: HH:mm:ss --> "+localTime_short);
// String-->Date
// 方式一:用SimpleDateFormat的parse,需要处理异常
// SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// Date parse1 = simpleDateFormat.parse("2022-03-23 12:45:35");
// System.out.println("String格式时间转换为Date: "+parse1);
// 方式二:用Date的from方法,推荐此写法
Date from1 = Date.from(LocalDateTime.parse("2022-03-23 12:45:35", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).toInstant(ZoneOffset.of("+8")));
System.out.println("String格式时间转换为Date: 用Date的from方法 "+from1);
时间戳转换为Date,LocalDateTime,LocalDate,LocalTime
// 1648344941916<--->"2022/3/27 09:35:41"
long currentTimeTimestamp = Long.parseLong("1648344941916");
// long--->Date
Date date = new Date(currentTimeTimestamp);
System.out.println("long转换为Date: "+date);
// long-->LocalDateTime
// 毫秒级转换
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(currentTimeTimestamp), ZoneId.of("+8"));
System.out.println("long转换为LocalDateTime: "+localDateTime);
// long-->LocalDate
LocalDate localDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(currentTimeTimestamp), ZoneId.of("+8")).toLocalDate();
System.out.println("long转换为LocalDate: "+localDate);
// long-->LocalTime
LocalTime localTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(currentTimeTimestamp), ZoneId.of("+8")).toLocalTime();
System.out.println("long转换为LocalTime: "+localTime);
Date,LocalDateTime,LocalDate,LocalTime转换为String格式时间
// 准别一个LocalTime,14:23:58:234
LocalTime localTime2=LocalTime.of(14,23,58,234);
// 2022-12-12 00:00:00
LocalDate localDate1=LocalDate.of(2022,12,12);
// 2022-12-12 12:13:23:355
LocalDateTime localDateTime1=LocalDateTime.of(2022,12,12,12,13,23);
// 当前时间
Date date1=new Date();
// LocalTime-->String
String format1 = localTime2.format(DateTimeFormatter.ofPattern("HH:mm:ss:SSS"));
System.out.println("14:23:58的LocalTime转换成字符串后是:" + format1);
// LocalDate-->String
String format = localDate1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("LocalDate转String结果:"+format);
// LocalDateTime-->String
String format2 = localDateTime1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS"));
System.out.println("LocalDateTime转String结果:"+format2);
// Date-->String
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
String format3 = simpleDateFormat.format(date1);
System.out.println("Date转String结果:"+format3);
Date,LocalDateTime,LocalDate转换为时间戳
// 2022-12-12 00:00:00
LocalDate localDate3 = LocalDate.of(2022, 12, 12);
// 2022-12-12 12:13:23:355
LocalDateTime localDateTime4 = LocalDateTime.of(2022, 12, 12, 12, 13, 23);
// 准备一个时间
long currentTimeTimestamp2 = Long.parseLong("1648344941916");
// long--->Date
Date date2 = new Date(currentTimeTimestamp2);
System.out.println("1648344941916:long转换为Date: " + date);//'2022/3/27 09:35:41'
// LocalDate-->时间戳long
long timestamp_localDate = localDate3.atStartOfDay().toInstant(ZoneOffset.of("+8")).toEpochMilli();
System.out.println("LocalDate转时间戳long结果:" + timestamp_localDate);
// LocalDateTime-->时间戳long
long timestamp_localDateTime = localDateTime4.toInstant(ZoneOffset.of("+8")).toEpochMilli();
System.out.println("LocalDateTime转时间戳long结果:" + timestamp_localDateTime);
// Date-->时间戳long
long timestamp_Date = date2.toInstant().toEpochMilli();
System.out.println("Date转时间戳long结果:" + timestamp_Date);
Date,LocalDateTime,LocalDate,LocalTime之间的相互转换
参考:LocalDateTime、LocalDate、Date的相互转换
// 准备LocalDateTIme 2022-12-12 12:13:23:355
LocalDateTime localDateTime5 = LocalDateTime.of(2022, 12, 12, 12, 13, 23);
System.out.println("准备LocalDateTIme:"+localDateTime5);
//LocalDateTime-->LocalTime
LocalTime localTime3 = localDateTime5.toLocalTime();
System.out.println("LocalDateTime-->LocalTime: "+localTime3);
//LocalDateTime-->LocalDate
LocalDate localDate4 = localDateTime5.toLocalDate();
System.out.println("LocalDateTime-->LocalDate: "+localDate4);
// LocalDate-->LocalDateTime
LocalDateTime localDateTime2 = localDate4.atStartOfDay();
// 可通过localDate4.atTime()进一步设置时间
System.out.println("LocalDate-->LocalDateTime: "+localDateTime2);
// LocalDateTime-->Date
ZoneId zoneId=ZoneId.systemDefault();
// 方式一:
// ZonedDateTime zonedDateTime=localDateTime5.atZone(zoneId);
// Date from = Date.from(zonedDateTime.toInstant());
// 方式二:
Date from = Date.from(localDateTime5.toInstant(ZoneOffset.of("+8")));
System.out.println("LocalDateTime-->Date: "+from);
//LocalDate-->Date,先调用 atStartOfDay() 方法转 LocalDateTime 再转 Date
LocalDate localDate9 = LocalDate.now();
System.out.println("准备的LocalDate是:"+localDate9);
Date from2 = Date.from(localDate9.atStartOfDay().toInstant(ZoneOffset.of("+8")));
System.out.println("LocalDate-->Date: "+from2);
// Date-->LocalDateTime
Date date3= new Date();
// Instant instant = date3.toInstant();
// LocalDateTime localDateTime6 = instant.atZone(ZoneId.of("+8")).toLocalDateTime();
LocalDateTime localDateTime7 = date3.toInstant().atZone(ZoneId.of("+8")).toLocalDateTime();
System.out.println("Date-->LocalDateTime:"+localDateTime7);
// Date-->LocalDate
LocalDate localDate5 = date3.toInstant().atZone(ZoneId.of("+8")).toLocalDate();
System.out.println("Date-->LocalDate:"+localDate5);
时间转换完整案例代码:
public class TestLocalDateTimeConvert {
@Test
public void test() {
// 1648344941916<--->"2022/3/27 09:35:41"
long currentTimeTimestamp = Long.parseLong("1648344941916");
// long--->Date
Date date = new Date(currentTimeTimestamp);
System.out.println("long转换为Date: " + date);
// long-->LocalDateTime
// 毫秒级转换
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(currentTimeTimestamp), ZoneId.of("+8"));
System.out.println("long转换为LocalDateTime: " + localDateTime);
// long-->LocalDate
LocalDate localDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(currentTimeTimestamp), ZoneId.of("+8")).toLocalDate();
System.out.println("long转换为LocalDate: " + localDate);
// long-->LocalTime
LocalTime localTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(currentTimeTimestamp), ZoneId.of("+8")).toLocalTime();
System.out.println("long转换为LocalTime: " + localTime);
String source2 = "2022-03-23 12:45:35";
// String转各种时间
// 匹配规则写法
DateTimeFormatter localDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter localDateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter localDateFormatter_short = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter localTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter localTimeFormatter_short = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalDateTime localDateTime3 = LocalDateTime.parse("2022-03-23 12:45:35", localDateTimeFormatter);
System.out.println("String格式时间转换为LocalDateTime: " + localDateTime3);
// String-->LocalDate
// 字符串是长格式yyyy-MM-dd HH:mm:ss,匹配规则也该是yyyy-MM-dd HH:mm:ss
LocalDate localDate2 = LocalDate.parse("2022-03-23 12:45:35", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("String格式时间转换为LocalDate: yyyy-MM-dd HH:mm:ss--> " + localDate2);
// 字符串是短格式yyyy-MM-dd,匹配规则也该是yyyy-MM-dd
LocalDate localDate_short = LocalDate.parse("2022-03-23", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("String格式时间转换为LocalDate: yyyy-MM-dd --> " + localDate_short);
// String-->LocalTime
// 字符串是短格式yyyy-MM-dd,匹配规则也该是yyyy-MM-dd
LocalTime localTime1 = LocalTime.parse("2022-03-23 12:45:35", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("String格式时间转换为LocalTime: yyyy-MM-dd HH:mm:ss --> " + localTime1);
// 字符串是短格式yyyy-MM-dd,匹配规则也该是yyyy-MM-dd
LocalTime localTime_short = LocalTime.parse("12:45:35", DateTimeFormatter.ofPattern("HH:mm:ss"));
System.out.println("String格式时间转换为LocalTime: HH:mm:ss --> " + localTime_short);
// String-->Date
// 方式一:用SimpleDateFormat的parse,需要处理异常
// SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// Date parse1 = simpleDateFormat.parse("2022-03-23 12:45:35");
// System.out.println("String格式时间转换为Date: "+parse1);
// 方式二:用Date的from方法,推荐此写法
Date from1 = Date.from(LocalDateTime.parse("2022-03-23 12:45:35", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).toInstant(ZoneOffset.of("+8")));
System.out.println("String格式时间转换为Date: 用Date的from方法 " + from1);
// 准别一个LocalTime,14:23:58:234
LocalTime localTime2 = LocalTime.of(14, 23, 58, 234);
// 2022-12-12 00:00:00
LocalDate localDate1 = LocalDate.of(2022, 12, 12);
// 2022-12-12 12:13:23:355
LocalDateTime localDateTime1 = LocalDateTime.of(2022, 12, 12, 12, 13, 23);
// 当前时间
Date date1 = new Date();
// LocalTime-->String
String format1 = localTime2.format(DateTimeFormatter.ofPattern("HH:mm:ss:SSS"));
System.out.println("14:23:58的LocalTime转换成字符串后是:" + format1);
// LocalDate-->String
String format = localDate1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("LocalDate转String结果:" + format);
// LocalDateTime-->String
String format2 = localDateTime1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS"));
System.out.println("LocalDateTime转String结果:" + format2);
// Date-->String
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
String format3 = simpleDateFormat.format(date1);
System.out.println("Date转String结果:" + format3);
// 2022-12-12 00:00:00
LocalDate localDate3 = LocalDate.of(2022, 12, 12);
// 2022-12-12 12:13:23:355
LocalDateTime localDateTime4 = LocalDateTime.of(2022, 12, 12, 12, 13, 23);
// 准备一个时间
long currentTimeTimestamp2 = Long.parseLong("1648344941916");
// long--->Date
Date date2 = new Date(currentTimeTimestamp2);
System.out.println("1648344941916:long转换为Date: " + date);//'2022/3/27 09:35:41'
// LocalDate-->时间戳long
long timestamp_localDate = localDate3.atStartOfDay().toInstant(ZoneOffset.of("+8")).toEpochMilli();
System.out.println("LocalDate转时间戳long结果:" + timestamp_localDate);
// LocalDateTime-->时间戳long
long timestamp_localDateTime = localDateTime4.toInstant(ZoneOffset.of("+8")).toEpochMilli();
System.out.println("LocalDateTime转时间戳long结果:" + timestamp_localDateTime);
// Date-->时间戳long
long timestamp_Date = date2.toInstant().toEpochMilli();
System.out.println("Date转时间戳long结果:" + timestamp_Date);
// 准备LocalDateTIme 2022-12-12 12:13:23:355
LocalDateTime localDateTime5 = LocalDateTime.of(2022, 12, 12, 12, 13, 23);
System.out.println("准备LocalDateTIme:"+localDateTime5);
//LocalDateTime-->LocalTime
LocalTime localTime3 = localDateTime5.toLocalTime();
System.out.println("LocalDateTime-->LocalTime: "+localTime3);
//LocalDateTime-->LocalDate
LocalDate localDate4 = localDateTime5.toLocalDate();
System.out.println("LocalDateTime-->LocalDate: "+localDate4);
// LocalDate-->LocalDateTime
LocalDateTime localDateTime2 = localDate4.atStartOfDay();
// 可通过localDate4.atTime()进一步设置时间
System.out.println("LocalDate-->LocalDateTime: "+localDateTime2);
// LocalDateTime-->Date
ZoneId zoneId=ZoneId.systemDefault();
// 方式一:
// ZonedDateTime zonedDateTime=localDateTime5.atZone(zoneId);
// Date from = Date.from(zonedDateTime.toInstant());
// 方式二:
Date from = Date.from(localDateTime5.toInstant(ZoneOffset.of("+8")));
System.out.println("LocalDateTime-->Date: "+from);
//LocalDate-->Date,先调用 atStartOfDay() 方法转 LocalDateTime 再转 Date
LocalDate localDate9 = LocalDate.now();
System.out.println("准备的LocalDate是:"+localDate9);
Date from2 = Date.from(localDate9.atStartOfDay().toInstant(ZoneOffset.of("+8")));
System.out.println("LocalDate-->Date: "+from2);
// Date-->LocalDateTime
Date date3= new Date();
// Instant instant = date3.toInstant();
// LocalDateTime localDateTime6 = instant.atZone(ZoneId.of("+8")).toLocalDateTime();
LocalDateTime localDateTime7 = date3.toInstant().atZone(ZoneId.of("+8")).toLocalDateTime();
System.out.println("Date-->LocalDateTime:"+localDateTime7);
// Date-->LocalDate
LocalDate localDate5 = date3.toInstant().atZone(ZoneId.of("+8")).toLocalDate();
System.out.println("Date-->LocalDate:"+localDate5);
}
}
End.



