使用Presto、Trino数据库时提示“The datetime zone id ‘GMT+08:00‘ is not recognised”
出现这个问题的原因是:Presto、Trino的驱动使用了joda这个库来处理时区的问题。但这个库的编写人似乎对java zone的格式没有太多经验。先看一下出错的代码:
com.facebook.presto.jdbc.internal.joda.time.DateTimeZone#forID

根据String类型的zoneId转成DateTimeZone。如果未设置使用默认的。如果设置了,则先判断是否是UTC的,是的话则直接使用UTC处理。然后使用Provider的getZone()方法获取。如果没有取到的话,根据zoneId是否是+,-开头,手动计算时区。这里的问题就在于,国内写代码时,大家一般都是这么写的:
TimeZone.setDefault(TimeZone.getTimeZone(ZoneId.of("GMT+8")));
会导致上面的所有判断没有命中,直接进入最后的异常抛出。
解决办法:
1、通过下面的语句可以避免异常。如果程序中能够兼容“+08:00”这种时区格式,可以直接在代码中设置。这种设置是全局性的,一旦调整,整个程序都有影响。如果有逻辑不兼容这种格式,那么这种方法是不通用的。
TimeZone.setDefault(TimeZone.getTimeZone("+08:00"));
或者:TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
2、也可以试试不设置任何TimeZone,保持程序和环境默认。
3、最后还有一种,上面的代码中使用getProvider(), joda库本身只实现了两种,一个是UTC,顾名思义专门处理UTC时区;一个是ZoneInfoProvider,通过读取com.facebook.presto.jdbc.internal.joda.time/tz/data下的配置文件实现。看了一下里面是有shanghai的配置的。这个Provider是可以拓展的。我们可以增加一个自己的实现,来最小化数据库驱动对整个程序的影响。

示例代码:
DateTimeZone.setProvider(new Provider() {
@Override
public DateTimeZone getZone(String id) {
if (id.equals("UTC")) {
return DateTimeZone.UTC;
}
if (id.startsWith("GMT+08:00")) {
return DateTimeZone.forTimeZone(TimeZone.getTimeZone("+08:00"));
}
return null;
}
@Override
public Set<String> getAvailableIDs() {
return new TreeSet<String>() {
{
add("UTC");
add("GMT+8");
}
};
}
});
如果是Spring Boot程序,在main方法时调用即可。
相关文章:
使用Presto、Trino数据库时提示“The datetime zone id ‘GMT+08:00‘ is not recognised”
出现这个问题的原因是:Presto、Trino的驱动使用了joda这个库来处理时区的问题。但这个库的编写人似乎对java zone的格式没有太多经验。先看一下出错的代码: com.facebook.presto.jdbc.internal.joda.time.DateTimeZone#forID 根据String类型的zoneId转成…...
C# BeginInvoke 加 EndInvoke实现异步操作
1、定义一个委托 delegate long MyDel(int first, int second); 2、 需异步操作的函数 static int sum(int x,int y) {Console.WriteLine("InSide Sum1");Thread.Sleep(1000);Console.WriteLine("InSide Sum2");return x y;} 3、回调方法…...
“华为杯”研究生数学建模竞赛2015年-【华为杯】B题:数据的多流形结构分析(续)
目录 4.2.2 算法复杂度分析 4.2.3 参数影响 4.2.4 问题 3(a)求解 4.3 问题 3(b) 4.3.1 加权稀疏子空间聚类</...
R语言APSIM模型高级应用及批量模拟
随着数字农业和智慧农业的发展,基于过程的农业生产系统模型在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等领域扮演着越来越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…...
【硬件设计】模拟电子基础三--集成运算放大电路
模拟电子基础三--集成运算放大电路 一、集成运算放大器1.1 定义、组成与性能1.2 电流源电路1.3 差动放大电路1.4 理想运算放大器 二、集成运算放大器的应用2.1 反向比例运算电路2.2 同向比例运算电路2.3 反向加法运算电路2.4 反向减法运算电路2.5 积分运算电路2.6 微分运算电路…...
JavaWeb(11)——前端综合案例5(小黑记事本)
一、实例需求 ⌛ 功能需求: ① 列表渲染 ② 删除功能 ③ 添加功能 ④ 底部统计 和 清空任务 二、代码实现 ☕ <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8" /> <meta http-equiv"X-UA-Compa…...
在使用TensorFlow的时候内部报错:内部某个方法或属性不存在
看到TensorFlow内部封装的方法报错的时候,我的第一反应是版本不匹配,立马去搜了对应版本,按照网上给的TensorFlow 2.2.0keras 2.3.1 python 3.7,反反复复安装、卸载、升级、降低版本了很多回还是八行,就在心态快要爆爆…...
dubbo之高可用
负载均衡 概述 负载均衡是指在集群中,将多个数据请求分散到不同的单元上执行,主要是为了提高系统的容错能力和对数据的处理能力。 Dubbo 负载均衡机制是决定一次服务调用使用哪个提供者的服务。 策略 在Dubbo中提供了7中负载均衡策略,默…...
gitee代码扫描js代码,降低复杂度,减少if-else判断的处理方法
把if-else换成如下形式 页面上的代码 <el-button id"btnSave" type"primary" :loading"loadingEdit" click"saveEdit(put,baseSet)"> {{ $t("formLabel.save") }} </el-button> methods代码: // 编…...
MySQL及SQL语句(3)
MySQL及SQL语句(3) 文章目录 MySQL及SQL语句(3)一、多表查询1.1 准备sql1.2 笛卡尔积1.3 多表查询的分类:内连接查询外连接查询子查询多表查询练习 二、事务2.1 事务的基本介绍概念操作实例事务提交的两种方式 2.2 事务的四大特征原子性持久性隔离性一致性 2.3 事务…...
MySQL 查询语句大全
目录 基础查询 直接查询 AS起别名 去重(复)查询 条件查询 算术运算符查询 逻辑运算符查询 正则表达式查询⭐ 模糊查询 范围查询 是否非空判断查询 排序查询 限制查询(分页查询) 随机查询 分组查询 HAVING 高级查询…...
【Axure高保真原型】账单列表和详情
今天和大家分享账单列表和详情的原型模板,点击月份可以展开或收起对应的菜单列表,该模板是用中继器制作的,在中继器里填写数据后,自动计算出支出和收入总和,点击订单,可以查看该订单的详情。 【原型效果】…...
嵌入式面试题1
1 读程序段,回答问题 int main(int argc, char *argv[]) { int c 9, d 0; c c % 5; d c; printf("d%d\n",d);return 0;} a) 写出程序输出 b) 在一个可移植的系统中这种表达式是否存在风险?why? 答: 1.程序输出为:…...
base64转二进制流,file文件
base64转二进制流 img标签src属性,可以直接使用base64字符串,base64需要先解码,然后再转为流 /*** Base64字符串转二进制流* param {String} dataurl Base64字符串(字符串包含Data URI scheme,例如:data:image/png;b…...
各种查找算法的效率分析
各种查找算法的效率 顺序查找 一般顺序表(没有顺序,随机排列) 成功时平均查找长度: 1 . . . n n n 1 2 \frac{1...n}{n}\frac{n1}{2} n1...n2n1失败时平均查找长度: n n n 有序顺序表(按照递增或递…...
微报告下载!市场不确定性周期下的激光雷达前装赛道
随着理想L9 Pro版本(取消激光雷达)的上市(相比AD Max版本降价3万元),中国乘用车市场仅剩下蔚来(NT2.0平台)、阿维塔11仍全系标配激光雷达。 这对于激光雷达赛道来说,是一个明确的信…...
Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis tbms
功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查…...
并网逆变器学习笔记6---三电平SVPWM下的连续和不连续调制
之前在学习中总结过一次DPWM策略选择:并网逆变器学习笔记5---三电平DPWM 但是对于三电平逆变器而言,如何从连续调制切换到不连续调制,存在一些疑惑点,下午闲来无事,把SVPWM下的连续调制和不连续调制的开关状态选择&am…...
TS协议之PES(ES数据包)
TS协议之PAT(节目关联表)TS协议之PMT(节目映射表)TS协议之PES(ES数据包) 该文档已上传:下载地址 1. 概要 1.1 TS数据包(PES)协议数据组成 TSTS头PES头ES。TS…...
银河麒麟V10 SP3 X86 二进制文件部署 mysql-5.7.29 GTID 半同步复制的双主架构
文章目录 [toc]啰嗦一下mysql 的 AB 复制和 gtid 复制的优缺点AB 复制(Asynchronous Replication)GTID 复制(Global Transaction Identifier Replication) mysql gtid 并行复制和半同步复制的优缺点并行复制(Parallel …...
手把手教你用QT设计FPGA图像接收器:从UDP数据包到实时显示窗口的完整流程
QTUDP实现FPGA图像接收器的工程实践指南 在工业视觉检测、医疗影像传输等实时性要求较高的场景中,FPGA与PC端的高效图像传输一直是开发者面临的挑战。本文将分享一个基于QT框架的UDP图像接收器完整实现方案,重点解决网络流媒体处理中的三个核心问题&…...
别再乱删频道了!Conda报‘invalid character(s)’错误的深层原因与一劳永逸的修复指南
Conda版本字符串报错全解析:从根因诊断到永久修复方案 当你在终端输入conda create -n myenv python3.8时,突然跳出的Malformed version string ~: invalid character(s)错误提示,往往让人措手不及。这个看似简单的报错背后,隐藏…...
新手必看:SiameseAOE中文观点抽取,三步搞定评论分析
新手必看:SiameseAOE中文观点抽取,三步搞定评论分析 1. 引言:为什么你需要一个“评论分析助手”? 想象一下,你刚上架了一款新产品,后台涌入了成百上千条用户评论。你迫切想知道用户对产品的真实看法&…...
优化师资与课程体系,提升备考效率
一、行业痛点分析当前法考培训领域面临严峻挑战。教学质量层面,部分机构师资力量薄弱、课程内容陈旧、教学方法同质化,学员难以突破知识瓶颈,通关率持续低位。服务体验层面,督学形同虚设、答疑延迟严重、缺乏数据化学情追踪&#…...
大模型时代下的双塔模型:从原理到实战应用
1. 双塔模型:大模型时代的智能匹配引擎 想象你走进一家24小时营业的智能便利店,当你拿起一瓶饮料时,货架旁的屏幕立刻显示出搭配推荐的小吃;当你站在杂志区犹豫时,收银台已经打印出可能感兴趣的期刊优惠券。这背后很可…...
Spring Boot 启动过程全解析
Spring Boot 启动过程全解析 Spring Boot作为Java开发中最流行的框架之一,其简洁的配置和快速的启动能力深受开发者喜爱。但你是否好奇过,一个Spring Boot应用究竟是如何从零开始完成启动的?本文将深入解析Spring Boot的启动过程,…...
ROS机器人开发实战:用tf库搞定四元数、欧拉角、旋转矩阵的6种转换(附C++/Python代码)
ROS机器人开发实战:四元数、欧拉角与旋转矩阵的高效转换指南 在机器人开发中,姿态表示就像工程师的语言——四元数、欧拉角和旋转矩阵各有其独特的语法规则。记得第一次调试机械臂时,我被这些转换搞得晕头转向,直到发现tf库这个&q…...
深度解析Windows 11系统优化:3大高效修复策略实战指南
深度解析Windows 11系统优化:3大高效修复策略实战指南 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher Windows 11更新后࿰…...
别再只用Console线了!eNSP里给路由器/交换机配置Telnet远程登录(含AAA认证详解)
华为eNSP实战:Telnet远程登录与AAA认证的进阶配置指南 每次调试设备都要插拔Console线?是时候解放你的双手了。作为网络工程师,Telnet远程登录是必须掌握的生存技能,而AAA认证则是企业级网络管理的标配。今天我们就用华为eNSP模拟…...
极域电子教室破解终极指南:如何用JiYuTrainer重获电脑控制权
极域电子教室破解终极指南:如何用JiYuTrainer重获电脑控制权 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 还在为课堂上的全屏广播而苦恼吗?当老师开启极…...
