当前位置: 首页 > news >正文

第13章 时间处理

第13章 时间处理

示例代码

当时间存储需要格式化,可用 hutool 工具 LocalDateTimeUtil 进行时间格式的转化。

// 上报时间格式化并且时间在东八区
String eventTimeStr = s.getEventTime();
LocalDateTime localDateTime = LocalDateTimeUtil.parse(eventTimeStr, "yyyyMMdd'T'HHmmss'Z'");
LocalDateTime eventTime = DateTimeZoneConverter.utcToShanghai(localDateTime);

DateTimeZoneConverter工具类

package com.zzyl.nursing.util;import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Optional;/*** 日期时区转换工具类*/
public class DateTimeZoneConverter {// 预定义常用时区public static final ZoneId UTC_ZONE = ZoneOffset.UTC;public static final ZoneId SHANGHAI_ZONE = ZoneId.of("Asia/Shanghai");// 私有构造防止实例化private DateTimeZoneConverter() {}/*** 转换LocalDateTime时区(明确时区上下文)* @param sourceTime 源时间(无时区信息)* @param sourceZone 源时间所在的时区* @param targetZone 目标时区* @return 转换后的LocalDateTime*/public static LocalDateTime convert(LocalDateTime sourceTime, ZoneId sourceZone,ZoneId targetZone) {return sourceTime.atZone(sourceZone).withZoneSameInstant(targetZone).toLocalDateTime();}/*** 安全转换方法(Optional包装)* @param sourceTime 可为null的源时间* @param sourceZone 源时区* @param targetZone 目标时区* @return Optional包装的转换结果*/public static Optional<LocalDateTime> safeConvert(LocalDateTime sourceTime,ZoneId sourceZone,ZoneId targetZone) {return Optional.ofNullable(sourceTime).map(time -> convert(time, sourceZone, targetZone));}/*** UTC转上海时区的快捷方法* @param utcTime UTC时间的LocalDateTime* @return 上海时区本地时间*/public static LocalDateTime utcToShanghai(LocalDateTime utcTime) {return convert(utcTime, UTC_ZONE, SHANGHAI_ZONE);}/*** 带格式解析的完整流程* @param timeStr 时间字符串* @param pattern 格式模式(需匹配timeStr)* @param sourceZone 字符串对应的时区* @param targetZone 目标时区* @return Optional包装的转换结果*/public static Optional<LocalDateTime> parseAndConvert(String timeStr,String pattern,ZoneId sourceZone,ZoneId targetZone) {try {LocalDateTime sourceTime = LocalDateTime.parse(timeStr, DateTimeFormatter.ofPattern(pattern));return Optional.of(convert(sourceTime, sourceZone, targetZone));} catch (Exception e) {return Optional.empty();}}
}
http://www.dtcms.com/a/389702.html

相关文章:

  • Python 抓包工具有哪些,抓包失败怎么办?(Python 抓包工具清单 + 常见失败原因与逐步排查)
  • 数据库模式演进的利器:Alembic 深度解析
  • 用 JMeter 打通“异步入队 + 网关限流”的高并发压测实践
  • Linux服务器从零开始-服务器安装配置
  • Python第三节基本数据类型详解与使用指南
  • 【indextts2】之四:ubuntu24.04 经常跑满12G 显存、音色与录制关系很大
  • 【学习笔记】稳定币的技术原理与信任逻辑
  • 为 Elasticsearch Ruby Client 引入 ES|QL 查询生成器
  • 平安养老险陕西分公司积极开展“保障金融权益,助力美好生活”金融教育宣传周活动
  • 多线程的特点与同步、互斥锁
  • 将npm run dev 冷启动从 90s 优化到 8.5s的实践
  • 【附源码】基于SSM的小型银行贷款系统设计与实现
  • X-Forwarded-For
  • 中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
  • GitHub 上 Star 数量前 10 的开源项目管理工具
  • axios函数封装
  • NewSQL——核心原理与内部机制
  • 《从 0 到 1 打通网络服务任督二脉:域名、服务器与多站点配置全攻略》​
  • vue3学习日记(十七):动态路由使用解析
  • SpringBoot 启动流程
  • .NET驾驭Word之力:结构化文档元素操作
  • 解密F5负载均衡:优化网络性能的关键
  • 使用 .NET Core 6 Web API 的 RabbitMQ 消息队列
  • 时空预测论文分享:图时空注意力网络 ConvLSTM 时空演变
  • 千问大模型部署笔记
  • 网络:开源网络协议栈介绍
  • 设计模式(C++)详解—装饰器模式(3)
  • 双重锁的单例模式
  • 管理 Git 项目中子模块的 commit id 的策略
  • 跨境电商API数据采集的流程是怎样的?