首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中的TimeZones、GAE & Google (mySQL)

中的TimeZones、GAE & Google (mySQL)
EN

Stack Overflow用户
提问于 2016-08-23 01:54:38
回答 3查看 128关注 0票数 1

当我在本地运行下面的代码时,日期和时间以UTC的形式正确返回(在客户端)。当我在本地运行GAE服务器并写入位于Google中的mySQL数据库时,它也正确地将日期存储为UTC。

然而,当我将webapp部署到(GAE)时,时间被存储为UTC +4小时。Google中相同的mySQL服务器被设置为东方/纽约时区,这意味着mySQL服务器正在补偿(它认为是什么) UTC,为我在UTC时传递的时间增加了4个小时。

换句话说,当GAE向它发送值时,mySQL会增加4个小时.但当我的本地服务器这么做的时候就不会了。所以我想问题是,为什么当我运行本地GAE时,它会正确地存储,但是在运行GAE时增加4个小时呢?

TimeZone对象来自com.google.gwt.i18n.client.TimeZone库。无论我的客户端或服务器位于何处,我如何保证UTC的日期时间?我的应用程序无法在一段时间内依赖任何服务器,因为它大部分时间都是脱机运行的。

代码语言:javascript
复制
private static Date getNowDateTimeUTC() {
    DateTimeFormat df = DateTimeFormat.getFormat("yyyy-MM-dd HH:mm:ss.SSS");
    String utcDateString = df.format(new Date(), TimeZone.createTimeZone(0));
    Date returnDate = DateTimeFormat.getFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(utcDateString);
    returnDate.setTime((returnDate.getTime() / 1000) * 1000); // rid the milliseconds
    return returnDate;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-24 03:12:47

最后,我存储了自历元开始的秒数,而不是实际的日期值。这样,mySQL就不会试图修复时区。

票数 0
EN

Stack Overflow用户

发布于 2016-08-23 02:13:59

代码语言:javascript
复制
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));

也许你可以像这样设置时区。亚洲/上海取代您的时区!

票数 0
EN

Stack Overflow用户

发布于 2016-09-10 20:17:11

在我公司的项目中,我们在客户端使用jsTimezoneDetect库来用JavaScript检测时区。图书馆很容易使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39091169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档