- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
已解答:这个问题以不同的形式出现在 styackoverflow 中,我已经能够很好地利用其中的一些答案。但此时此刻,即使之前回答过的问题似乎也不起作用。这个问题看起来应该很简单,但我真的很困惑。
我有一个项目(约会日历),其中日期时间需要存储在 MySQL 中,然后以本地计算机上时区的正确时间显示,无论从何处查看。为了实现这一点,我认为最简单的方法是将时间存储为 UTC。因此,无论在何处创建约会,开始时间和结束时间都会在客户端上转换为 UTC,然后存储在数据库中。到目前为止,一切都很好。我能够用这段代码完成这个任务。 DateTimePermissive 是我正在使用的选择器特有的
LocalDateTime st = start.getDateTimePermissive();
ZonedDateTime stz = st.atZone(ZoneId.systemDefault());
ZonedDateTime stzUTC = stz.withZoneSameInstant(ZoneId.of("UTC"));
java.sql.Timestamp startTime = Timestamp.valueOf(stzUTC.toLocalDateTime());
LocalDateTime et = end.getDateTimePermissive();
ZonedDateTime etz = st.atZone(ZoneId.systemDefault());
ZonedDateTime etzUTC = etz.withZoneSameInstant(ZoneId.of("UTC"));
java.sql.Timestamp endTime = Timestamp.valueOf(etzUTC.toLocalDateTime());
我遇到麻烦的地方是从另一个方向返回。我已经尝试了各种其他方法来执行此操作,但似乎无法使任何方法工作,即使我觉得我的代码是正确的。这就是我现在正在尝试的方法。
java.sql.Timestamp st = apptRecords.getTimestamp("start");
LocalDateTime stld = st.toLocalDateTime();
ZonedDateTime startTime = stld.atZone(ZoneId.systemDefault());
//String startTimeConverted = startTime.toString();
java.sql.Timestamp et = apptRecords.getTimestamp("end");
LocalDateTime etld = et.toLocalDateTime();
ZonedDateTime endTime = etld.atZone(ZoneId.systemDefault());
//String endTimeConverted = endTime.toString();
看起来这应该有效。我还尝试创建一个设置为 UTC 的 ZonedDateTime ,然后将其设置为本地时间,认为可能是因为 java.sql.timestamp 不包含可能需要的时区。这也行不通。
此时,我非常乐意将时区偏移量作为 int 值存储在某个静态变量中,然后只需执行 ZonedDateTime.minus(ZoneOffsetNumber, 分钟) 或类似的操作即可获得正确的本地时间,但是我不知道如何查找并将其存储为 int 值。
它总是以 UTC 时间返回。它显示正确的时区名称,例如美国/东部,但仍显示 UTC 时间。
我应该使用 atInstant 吗?我也无法让它发挥作用。
这是一个学校项目,我不允许更改 MySQL 中的任何变量类型。这些特定的是日期时间。
有人有这方面的经验吗?对于此类事情,以 UTC 格式存储在服务器上似乎是最佳实践。我不明白为什么回到原来的时区这么难。
编辑:我在这里找到了阿卜杜勒哈菲德答案的答案:Is java.sql.Timestamp timezone specific?
通过将他提到的连接属性添加到连接属性
useTimezone=true
useLegacyDatetimeCode=false
serverTimezone=UTC
无论我从哪个时区登录,时间都会转换为正确的时间。
因此,如果其他人对此有疑问,这里就是您的答案。像这样设置你的连接器
Properties props = new Properties();
props.setProperty("user", "root");
props.setProperty("password", "");
props.setProperty("useTimezone", "true");
props.setProperty("useLegacyDatetimeCode", "false");
props.setProperty("serverTimezone", "UTC");
Connection con = DriverManager.getConnection(conString, props);
最佳答案
我在这里找到了阿卜杜勒哈菲德答案的答案:Is java.sql.Timestamp timezone specific?
通过将他提到的连接属性添加到连接属性
useTimezone=true
useLegacyDatetimeCode=false
serverTimezone=UTC
无论我从哪个时区登录,时间都会转换为正确的时间。
因此,如果其他人对此有疑问,这里就是您的答案。像这样设置你的连接器
Properties props = new Properties();
props.setProperty("user", "root");
props.setProperty("password", "");
props.setProperty("useTimezone", "true");
props.setProperty("useLegacyDatetimeCode", "false");
props.setProperty("serverTimezone", "UTC");
Connection con = DriverManager.getConnection(conString, props);
关于java - 将 UTC 时间从 MySQL 转换为本地时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48737018/
在我的 Rails (3.0) 应用程序中,我使用助手 time_zone_select() 来使用时区。它生成时区名称,如“(GMT+01:00) Paris”... 但这些名称与 MySQL 中的
我正在解析格式为的日期: SimpleDateFormat formatter = new SimpleDateFormat("EE MMM dd HH:mm:ss Z yyyy"); 当我这样做的时
我在 Android 上使用 ACTION_TIMEZONE_CHANGED Intent 过滤器来响应时区更改。 我注意到 Jodas 当前时区此时没有更新,使用:DateTimeZone.getD
我有一个旧版 Windows 应用程序,它从数据库读取数据。其中一列是“TimeZoneInfoId”。在传统世界中,它是由另一个 Windows 应用程序编写的,因此它存储 Windows 字符串:
我是数据库开发新手,目前从事 MySQL 工作。我有一列包含美国的所有时区。我希望能够获取每行中每个时区的当前时间(只有时间,没有日期)。 时区数据如下:+05:00、-03:00 等等 这就是我尝试
我正在尝试了解 session 时区在 PostgreSQL 中的工作原理。 当我将 session 时区设置为“01:00”时,返回日期为“-01:00”。符号总是颠倒的,我不理解这种行为。 这怎么
我写入我的 mongoDB 数据库,例如开始日期,开始日期始终是一周中的星期一(我使用并且我在欧洲中部时区)。 "startDate" : ISODate("2014-12-28T23:00:00Z"
是否有详尽的 MySQL 时区列表? 似乎 MySQL 设置中 time_zone 的有效值取决于主机操作系统,但我一直无法找到可能值的列表。 我需要时间显示卡尔加里本地时间。 最佳答案 默认情况下,
我已经在 config/app.php 中配置了时区至 Europe/Lisbon . 如果我做 return date_default_timezone_get(); , 返回 Europe/Lis
我在整个脚本中广泛使用 unix 时间,通常我将时区设置如下: date_default_timezone_set('Europe/London'); 这一直工作正常,直到上周末时钟回退一个小时,我怀
我有一个字符串,2013-10-07T23:59:51.205-07:00,想将其转换为 Java 日期对象。我收到解析错误。 date = new SimpleDateFormat("yyyy-MM
如何更改日志文件名中的 log4j 时区? 我的 log4j.xml 文件:
在JAVA中,如何确定所有日期都作为GMT日期返回? 例如,即使我尝试使用GMT语言环境强制使用DateFormat,它也会应用某种逻辑来检索BST日期。 public static void mai
好吧,这是我遇到过的最奇怪的错误之一! 首先:我不是 Python 程序员,该脚本是由 friend 编写的(我认为他的大部分内容来自示例)。 该脚本的用途:将日历信息(CET 时间)从 XML 文件
我们有一个网站,目前在某个时间(由用户选择)运行拍卖,这一切都工作正常,因为当服务器到达该时间时,拍卖就会开始。然后我们必须添加时区,具体取决于用户居住的地方。然后,根据所选的下拉菜单,这将增加或减少
我陷入了这个逻辑。我正在开发一个消息调度项目,我的客户来自不同的国家。让我们考虑一下亚洲(不遵守夏令时)和美国/纽约(遵守夏令时)。 现在,我正在编写以下查询来获取距当前时间 10 分钟间隔内的时间表
我尝试返回特定时区的值,但我遇到了一些奇怪的响应行为: SELECT created_at AT TIME ZONE 'US/Pacific' - created_at, NOW() A
我正在尝试将不带时区值(例如“31.05.2015”)的字符串转换为 NSDate。 我的 DateFormatter 有什么问题?它返回日期 2015-05-31 22:00:00 +0000当我尝
我已经成功地将我的本地 tzinfo 导入到 mysql 中,我几乎已经了解了关于如何存储和使用这些数据的所有细节,除了一个字段。有一个名为 Transition_type_id 的数字字段(在表 t
为什么以下行返回的 TimeZone 显示不正确的时间: TimeZone.getTimeZone("America/Ottawa") 现在显示晚上 10:26 [亚特兰大时间现在是 6:26,Ott
我是一名优秀的程序员,十分优秀!