首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java错误地将Date对象返回给Flex

Java错误地将Date对象返回给Flex
EN

Stack Overflow用户
提问于 2011-09-20 21:10:08
回答 4查看 1.3K关注 0票数 1

我使用的是Flex、GraniteDS和Javа。Flex正在正确地发送夏令时的日期,例如“9月10日10:00:00 UTC-7",但毕竟我收到相同的日期,但在标准时间”9月10日11:00:00:00 UTC-8“。据我所知,GraniteDS错误地反序列化了Java Date。有什么办法解决这个问题吗?

EN

回答 4

Stack Overflow用户

发布于 2013-08-29 01:08:05

这是因为flash客户端和服务器之间存在时区差异。假设: GMT + X:服务器的时区GMT + Y:客户端的时区

解决问题的正确方法是在编组格式(XML、AMF...)上定义一个固定的时区。并将您在正确地点的日期转换为此时区。

例如:

从客户端向服务器发送消息时: client GMT +Y ->客户端日期到GMT的转换+0 -> AMF GMT +0 ->服务器端从GMT +0到GMT +X ->服务器GMT +X

当服务器向客户端发送数据时: server GMT +X ->服务器端转换为GMT +0 -> AMF GMT +0 ->客户端转换为GMT +Y ->客户端GMT +Y

对于Granite,这意味着有两个修复要做:修改Groovy模板,以便在客户端将日期转换为GMT+0,以及在服务器端添加一个转换器(日期转换为日期,但带有时区转换)。我现在已经在许多Flex项目上做了这个补丁,它工作得很好。

票数 1
EN

Stack Overflow用户

发布于 2011-09-20 21:39:42

我不知道这是否能解决你的问题,但几年前我在Flex dates上也遇到过类似的问题。

我通过ColdFusion从SQL数据库中获取一个表到flex swf。我注意到日期从ColdFusion /数据库服务器的时区转换为运行Flex的时区。也许这就是问题所在?

我解决了这个问题(尽管它增加了很大的开销),增加了时区差异并补偿了flex端的时区。

票数 0
EN

Stack Overflow用户

发布于 2011-09-20 21:53:04

我们通过避免这个问题来解决这个问题,在层之间传输时将所有日期格式化为字符串。

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

https://stackoverflow.com/questions/7485669

复制
相关文章

相似问题

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