java - 将时间戳从 db 和 Timezone 列转换为 RFC 3999 格式
问题描述
在我开始之前 - 我已经查看了这些答案,但没有得到所需的答案:
我目前已从数据库 2 列中读取:
- created_at(创建此列的时间戳 - 例如,
2016-12-23 15:39:15
) - timezone - 时间戳的时区(例如 -
GMT+01:00
)。
我需要将此信息转换为RFC 3999
(例如 -2019-10-02 10:19:23-0800
时间的表示。但是,我无法弄清楚如何做到这一点,因为从我所看到OffsetDateTime
的情况来看,时区需要不同的格式。
另一种选择可能是在数据库级别上执行此操作-但我也想不出一种方法来执行此操作...
编辑:
如果你有本地时间和时区,你可以使用ZonedDateTime
如下:
final date = new LocalDateTime(...);
final String timezone = ...;
ZonedDateTime.of(date, ZoneOffset.of(zone));
解决方案
您可能正在寻找一个简单的类型转换:
SELECT CAST (
CAST (
'2016-12-23 15:39:15' || ' ' || 'GMT+01:00'
AS timestamp with time zone
)
AS text
);
text
------------------------
2016-12-23 17:39:15+01
(1 row)
推荐阅读
- computer-science - 计算机以 32 位为一组表示信息
- python - 约束 QGraphicsItems 组的成员在一个方向上共享彼此的动作
- sql - 没有子查询的表的多次传递
- python - 神经网络似乎无法学习
- reactjs - React Native 在一个平面列表中呈现标签列表,彼此相邻
- php - 如何在 Visual Studio Code 中的 PHP 函数/类/变量中显示数字引用
- c# - 更改 dateTime 的 get 和 set 属性
- android - 将应用程序重新提交到 google play 商店,但仍然存在被拒绝的警告标志
- android - Kotlin Android - 从 Fragment 中的 AsyncTask 更新 UI
- android-studio - 如何在android studio中配置flutter项目?