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

【将时间戳转成任意格式的时间】

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

【将时间戳转成任意格式的时间】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言

    一、用时间戳实例化Instant

    二、具体使用

    总结


前言

问题背景:

        在解决动态时间格式转化的时候遇到了HH:mm型格式无法转化的问题,大概原因就是SimpleDateFormat在格式化日期的时候只能去尾不能去头,而且该方法线程也不安全,这里推荐使用另一种方法DateTimeFormatter。


提示:以下是本篇文章正文内容,下面案例可供参考

一、用时间戳实例化Instant

这里简单介绍一下Instant:

        Instant是Java 8中新增的日期API,早在JDK1.0时代,JDK就包含了一个与时间相关的java.util.Date类,而因为其本身的缺陷,其大多数方法都在JDK1.1时代被新引入的与时间相关的Calendar类取代。而Calendar类并不比Date类好太多,其本身也有不少问题,并且Calendar类虽然功能更强,其本身线程也是不安全的。

二、具体使用

直接上代码:

Instant        instant        = Instant.ofEpochMilli(1657652580000L);
// 设置偏移量为8,以格林威治时间为基准偏移8为东八区时间
OffsetDateTime    offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
// 此处可以是任意格式,例如:yyyy-MM-dd,yyyy,yyyy-MM,这里使用HH:mm。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm", Locale.CHINA);
// 输出为:03:03
System.out.println(formatter.format(offsetDateTime));

封装成工具类:

public static String longToAnyStringDate(Long time, String formatStr) {
    Instant                            instant        = Instant.ofEpochMilli(time);
// 设置偏移量为8
    OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
    DateTimeFormatter formatter      = format.DateTimeFormatter.ofPattern(formatStr);
    return formatter.format(offsetDateTime);
}

总结

        时间格式转化方法很多,尽量使用功能更强,线程安全的方法,目前大部分时间格式转化的文章大都比较老,使用的还是线程不安全的SimpleDateFormat或者Calendar。

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

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

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