【问题标题】:Date returned with Jdbc is in PDT timezone使用 Jdbc 返回的日期位于 PDT 时区
【发布时间】:2012-07-30 15:49:19
【问题描述】:

我编写了一个使用 Google Apps Script JDBC 对象在 mySQL 数据库中存储日期(日期类型字段)的独立脚本。日期的时区是 UTC。

我做了一个选择所有日期的查询,例如: 从Table1中选择Date1

当我使用 GetObject(1) 检索数据时,它返回一个设置了 PDT 时区的 Date 对象。 更准确地说,当我提示 theDate.toString() 时,它给了我: 2012 年 7 月 30 日星期一 23:51:25 GMT+0200 (CEST) 我注意到来自 db 的原始日期(2012-07-30 14:51:25)已被视为 PDT 并转换为 GMT+2。

脚本时区不相关,设置为 GMT+1...

我如何告诉 JDBC 数据库中的日期是 UTC?

谢谢

【问题讨论】:

  • 我假设脚本的时区设置为 PDT。尝试在脚本编辑器->文件->项目属性->信息选项卡->时区中将时区更改为格林威治标准时间。
  • 你的意思是java.util.Date?你怎么知道它是 PDT 而不是 UTC?
  • 不,不是 Java 的日期,而是您的 Google Apps 脚本的时区。打开 GAS 编辑器,点击 File->Project Properties->Info Tab->Time Zone 并在 Time Zone 组合中选择 GMT。
  • 对不起,我应该在第一条消息中提到这一点。脚本的时区不相关,目前设置为法国时区 GMT+1。
  • @ThierryChevillard:请回答 Tomasz 的问题。你怎么知道它是PDT? java.util.Date 没有任何时区。只有当您显示日期时,日期格式化程序/打印机才会使用时区以可读格式显示日期。

标签: jdbc google-apps-script


【解决方案1】:

Issue 1642 中进行的一些调试表明这是由于 JDBC 与 MySQL 的工作方式造成的,目前无法在 Apps 脚本中设置修复它所需的连接标志。

为了清楚起见,将 JavaScript 日期转换为字符串时显示的时区将始终是服务器的时区,在本例中为太平洋时间。使用Utilities.formatDate 在特定时区显示日期。

【讨论】:

    猜你喜欢
    • 2016-01-04
    • 2014-12-27
    • 2018-09-16
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2016-01-19
    相关资源
    最近更新 更多