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

时间工具类

import java.time.OffsetDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; /** * 解析带时区的时间字符串并格式化 */ public class TimeFormatConverter { // 目标格式化样式(可根据需求修改) public static final String TARGET_PATTERN = "yyyy-MM-dd HH:mm:ss"; // 目标时区(默认转成东八区/北京时间,可根据需求修改) public static final ZoneId TARGET_ZONE = ZoneId.of("Asia/Shanghai"); /** * 核心方法:解析ISO格式时间字符串 → 转换时区 → 格式化 * @param timeStr 原始时间字符串(如:2026-03-10T01:55:59.169+0000) * @param targetPattern 目标格式(如:yyyy-MM-dd HH:mm:ss) * @param targetZone 目标时区(如:Asia/Shanghai) * @return 格式化后的时间字符串 */ public static String convertIsoTime(String timeStr, String targetPattern, ZoneId targetZone) { if (timeStr == null || timeStr.isEmpty()) { return ""; } try { // 步骤1:解析原始ISO时间字符串(兼容+0000/UTC时区格式) // 先处理格式:将+0000替换为+00:00(符合OffsetDateTime解析要求) String standardIsoStr = timeStr.replaceFirst("(\\+\\d{2})(\\d{2})$", "$1:$2"); OffsetDateTime offsetDateTime = OffsetDateTime.parse(standardIsoStr); // 步骤2:转换为目标时区(比如从UTC+0转成UTC+8) ZonedDateTime targetZonedTime = offsetDateTime.atZoneSameInstant(targetZone); // 步骤3:格式化为目标字符串 DateTimeFormatter formatter = DateTimeFormatter.ofPattern(targetPattern); return targetZonedTime.format(formatter); } catch (DateTimeParseException e) { throw new IllegalArgumentException("时间字符串解析失败,原始字符串:" + timeStr, e); } } // 简化方法:使用默认目标格式和时区(东八区 + yyyy-MM-dd HH:mm:ss) public static String convertIsoTime(String timeStr) { return convertIsoTime(timeStr, TARGET_PATTERN, TARGET_ZONE); } // 测试示例 public static void main(String[] args) { // 原始时间字符串(UTC+0时区) String originalTimeStr = "2026-03-10T01:55:59.169+0000"; // 转换为东八区的 "yyyy-MM-dd HH:mm:ss" 格式 String formattedTime = convertIsoTime(originalTimeStr); System.out.println("原始时间(UTC+0):" + originalTimeStr); System.out.println("格式化后(UTC+8):" + formattedTime); // 输出:2026-03-10 09:55:59 // 自定义格式示例:只保留年月日 String customFormat = convertIsoTime(originalTimeStr, "yyyy-MM-dd", TARGET_ZONE); System.out.println("自定义格式(年月日):" + customFormat); // 输出:2026-03-10 } }

http://www.jsqmd.com/news/461190/

相关文章:

  • 10/30公分金丝楠木哪家强?西南Top5供应商全解析 - 深度智识库
  • python flask django企业公司车辆调度管理系统
  • python flask django农产品 超市在线商城购物管理系统数据可视化分析系统
  • 从“写代码”到“编排智能”:AI 浪潮下后端开发的范式转移
  • python flask django明星粉丝周边商城系统公益应援服务平台
  • python flask django民宿预订系统 可视化 短租平台
  • python flask django考研在线学习交流平台 可视化
  • Flutter 三方库 l10n_languages 的鸿蒙化适配指南 - 实现全量的 ISO 语言代码转换、支持全球语种的外放名称与端侧本地化语言列表构建
  • 基于ssm驾考在线学习与测试系统
  • 基于SSM的员工宿舍后勤管理系统
  • Flutter 三方库 http_cache_client 的鸿蒙化适配指南 - 实现具备 RFC 规范缓存策略与过期自动刷新的 HTTP 客户端、支持端侧带宽节省与离线加载实战
  • 基于SSM的信息技术论坛系统的设计与实现
  • Flutter 三方库 flutter_connectivity 的鸿蒙化适配指南 - 实现具备网络类型感知与连通性自愈的状态管理、支持端侧多网融合环境下的业务自适应实战
  • Flutter 三方库 simple_rsa 的鸿蒙化适配指南 - 实现非线性 RSA 密钥对生成与端侧文本加解密、支持标准公钥指纹验证与高强度数字签名实战
  • Harmonyos应用实例58. 小数的大小比较:跳远比赛
  • Harmonyos应用实例59. 数学广角:搭配中的学问
  • 导师不会告诉你:7款AI论文生成器隐藏技巧,真文献AIGC率5% - 麟书学长
  • 19.JavaDoc
  • 2026长辈自己在家染发,选什么染发膏好 - 品牌排行榜
  • 2026不沾头皮不易掉色且不伤头发的染发膏推荐 - 品牌排行榜
  • Tree Traversals Again
  • 2026年染发剂操作简单的品牌推荐及使用指南 - 品牌排行榜
  • 2026年不沾头皮且不伤头发操作简单的染发膏推荐 - 品牌排行榜
  • Java学习日记(第六天)
  • 别再用国外第三方视觉软件了!C# WinForms+YOLOv9可商用外观缺陷检测全流程,从需求调研到批量部署附20个工业级坑
  • Python内存管理的深度剖析:超越垃圾回收的底层机制
  • Flutter 三方库 simple_json 的鸿蒙化适配指南 - 实现极简主义的 JSON 解析与映射、支持端侧零负担的数据对象序列化实战
  • Day 1 - TypeScript 环境搭建与初体验 ??
  • 智路慧眼:基于 YOLOv12 + DeepSeek 的道路缺陷智能检测与养护决策系统 智慧交通-**基于YOLOv12+DeepSeek的道路缺陷智能检测系统**
  • 这个新闻居然是真的——一颗大脑被上传进电脑,然后活了