欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

LocalDateTime与DateTimeFormatter,毫秒值,时间和文本转换

发布时间:2024/1/8 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 LocalDateTime与DateTimeFormatter,毫秒值,时间和文本转换 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
/*=== 毫秒值与时间互相转换 ===*//** 毫秒值>>时间* 思路:先转换成Instant,再加上时区(ZoneOffset也可以)转换成LocalDateTime* 思路:使用LocalDateTime.ofEpochSecond 传入秒,和纳秒值*/long milli = 1555666999123L;//首先来一个long毫秒值,也可使用System.currentTimeMillis()LocalDateTime time1 = LocalDateTime.ofInstant(Instant.ofEpochMilli(milli), ZoneId.systemDefault());LocalDateTime time2 = LocalDateTime.ofEpochSecond(milli / 1000, (int)(milli % 1000 * 1000_000), ZoneOffset.ofHours(8));System.out.println("毫秒值转换时间方式一:" + time1);//2019-04-19T17:43:19.123System.out.println("毫秒值转换时间方式二:" + time2);//2019-04-19T17:43:19.123System.out.println("两种方式结果是否一致:" + time1.equals(time2));//true/** 时间>>毫秒值* 思路:先根据当前时间的时区转换成Instant,再使用Instant对象的toEpochMilli方法* 思路:使用toEpochSecond(ZoneOffset)和getNano()分别获得秒(整数部分,不足一秒的舍弃)和纳秒,再统一单位到毫秒进行相加*/LocalDateTime time = LocalDateTime.of(2019, 4, 19, 17, 43, 19, 123 * 1000_000);//首先有一个时间对象,2019-04-19T17:43:19.123long milli1 = time.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();long milli2 = time.toEpochSecond(ZoneOffset.ofHours(8)) * 1000 + time.getNano() / 1000_000;System.out.println("时间转换毫秒值方式一:" + milli1);System.out.println("时间转换毫秒值方式二:" + milli2);/*=== 文本与时间互相转换 ===*///文本与时间转换需要一个模板和一个 DateTimeFormatterString pattern = "自定义文本''yyyy-MM-dd HH:mm:ss.SSS''";DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern(pattern);//java8版本在pattern带毫秒的解析中异常问题可使用DateTimeFormatterBuilder的appendPattern和appendValue方式进行构建(未验证)/*DateTimeFormatter timeFormatter = new DateTimeFormatterBuilder().appendPattern("自定义文本''yyyy-MM-dd HH:mm:ss.").appendValue(ChronoField.MILLI_OF_SECOND).appendPattern("''").toFormatter();*//** 文本>>时间* 思路:直接使用LocalDateTime.parse方法,传入文本和一个DateTimeFormatter实例* 思路:使用DateTimeFormatter对象的parse方法解析出一个TemporalAccessor对象,再最为LocalDateTime.from的参数*/String text = "自定义文本'2019-04-19 17:43:19.123'";//假设有这样一个文本,需要转换为时间LocalDateTime localDateTime1 = LocalDateTime.parse(text, timeFormatter);LocalDateTime localDateTime2 = LocalDateTime.from(timeFormatter.parse(text));System.out.println(localDateTime1);//2019-04-19T17:43:19.123System.out.println(localDateTime2);//2019-04-19T17:43:19.123System.out.println(localDateTime1.equals(localDateTime2));//true/** 时间>>文本* 思路:DateTimeFormatter和LocalDateTime都可以作为主调,另一个则最为参数*/LocalDateTime localDateTime = LocalDateTime.of(2019, 4, 19, 17, 43, 19, 123 * 1000_000);//假设有这样一个时间对象,2019-04-19T17:43:19.123 需要转换为文本System.out.println("时间转换为自定义文本:" + timeFormatter.format(localDateTime));System.out.println("时间转换为自定义文本:" + localDateTime.format(timeFormatter));/*=== 文本转换为毫秒值 ===*//** 文本=>时间=>毫秒值* 参考以上*/

总结

以上是生活随笔为你收集整理的LocalDateTime与DateTimeFormatter,毫秒值,时间和文本转换的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。