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

Java UTC时间戳与系统默认时区的Date,LocalTime,LocalDateTime,LocalDate类型相互转换

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

Java UTC时间戳与系统默认时区的Date,LocalTime,LocalDateTime,LocalDate类型相互转换

直接上代码

UTC时间戳转化系统默认时区的Date,LocalTime,LocalDateTime,LocalDate类型

{
    public static void main(String[] args)
    {
    	// 获取日历对象
		Calendar calendar = Calendar.getInstance();
		// 获取系统默认时区
		TimeZone tz       = TimeZone.getDefault();
		// 自定义设置UTC时间戳,更新整个日历对象
		calendar.setTimeInMillis(Long.parseLong("1651172445612"));
		// 转化系统默认时区格式
		calendar.add(Calendar.MILLISECOND, tz.getOffset(calendar.getTimeInMillis()));
		
		// 转为Date
		Date date = calendar.getTime();
		
		// Local类型的需要进行一个中间类进行转换
		ZonedDateTime zonedDateTime =  Instant.ofEpochMilli(calendar.getTimeInMillis()).atZone(ZoneId.systemDefault());
		// 转为LocalTime
		LocalTime localTime = zonedDateTime.toLocalTime();
		// 转为LocalDateTime
		LocalDateTime localDatetime = zonedDateTime.toLocalDateTime();
		// 转为LocalDate
		LocalDate localDate = zonedDateTime.toLocalDate();
	}
}

系统默认时区的Date,LocalTime,LocalDateTime,LocalDate类型转化UTC时间戳

public class Test
{
    public static void main(String[] args)
    {
    	// 获取现在的LocalDateTime 时间
        LocalDateTime localDateTime = LocalDateTime.now();
        // 转为TimeStamp类型
        Timestamp timestamp = Timestamp.valueOf(localDateTime.atZone(ZoneId.systemDefault())
                                                             .toOffsetDateTime()
                                                             .withOffsetSameInstant(ZoneOffset.UTC)
                                                             .toLocalDateTime());
       // 获取时间戳
        timestamp.getTime();
		
		// 剩下的LocalTime与LocalDate就与LocalDateTime的转化方法一样,只需将这两个类型转化为LocalDateTime即可
		// Localtime转为 LocalDateTime
		LocalDateTime localDateTime = LocalTime.now().atDate(LocalDate.now());
		
		// LocalDate 转为LocalDateTime
		// 需要注意的是LocalDate转化出来的时间是 00:00:00 那么转为UTC则是16:00:00,具体使用哪种看业务需求
		LocalDateTime localDateTime = LocalDate.now().atStartOfDay();
		// 如果不拿LocalDateTime只是单纯的需要使用上面的转化语句就可以少写一个函数例如:
		LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toOffsetDateTime()
                                                             .withOffsetSameInstant(ZoneOffset.UTC)
                                                             .toLocalDateTime());
       
       
		// Date类型
		// 只需要转一下Instant
		Timestamp.valueOf(new Date().toInstant().atZone(ZoneId.systemDefault())
                                                             .toOffsetDateTime()
                                                             .withOffsetSameInstant(ZoneOffset.UTC)
                                                             .toLocalDateTime());
		
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/848133.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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