栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java中时间的转换相关问题整理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java中时间的转换相关问题整理

前言

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.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781001.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号