我正在使用Flex,GraniteDS和Javа。 Flex在夏令時中正確發送日期,例如「9月10日10:00:00 UTC-7」,但畢竟我收到了相同的日期,但在標準時間「9月10日11:00:00:00 UTC- 8" 。據我瞭解,GraniteDS是錯誤地反序列化Java日期。 任何想法如何解決這個問題?Java將Date對象返回給Flex的錯誤
回答
我不知道這是否能解決您的問題,但幾年前我也遇到過與Flex日期類似的問題。
我正在通過ColdFusion將SQL數據庫中的表格轉換爲Flex swf。 我注意到日期是從ColdFusion /數據庫服務器的時區轉換到Flex應用程序運行的時區。也許這是問題?
我解決它(雖然它增加了一個顯著的開銷)在添加時區的差異,並在柔性結束
我們避免這個問題處理這個補償時區,層與層之間傳輸時格式化所有日期爲字符串。
不,花崗岩沒有做任何不正確的事情,它是內置的Flash時間轉換。以下鏈接闡明。在一些應用程序中(可能比全球化的「Flash-y」應用程序,而不是集中的「Enterprise-y」應用程序),這是期望的行爲,但通常不是。
對於解決方法,下面的鏈接有一個解決方案,並提到了其他一些替代方案。
http://flexblog.faratasystems.com/2008/02/05/flex-local-datestime-transfer-issue
我一般喜歡提到的發送身份字符串的解決方案mezmo,但當然要求&集成(ORM ...)將推動決策。 (這種類型的問題通常會存在於序列化在不同時區實例化的「日期/時間」對象的任何技術中。如果以毫秒爲單位考慮時間對象,則將新的Date()實例化爲當前時間將被設置爲自UNIX出生以來不同的毫秒數,取決於時區。)
這是因爲您的Flash客戶端和服務器之間的時區存在差異。 假設: GMT + X:你的服務器 GMT + Y的時區:您的客戶端
解決問題的正確途徑的時區是定義你的編組格式(XML,AMF固定的時區... )並將您的日期在正確的地方轉換爲此時區。
例如:
當您從客戶端發送消息到服務器: 客戶GMT + Y - >日期爲GMT + 0的客戶端轉換 - > AMF GMT + 0 - >服務器端格林威治標準時間GMT + 0 - >服務器GMT + X - >服務器端轉換爲GMT + 0 - > AMF格林威治標準時間GMT + 0 - >服務器GMT + >客戶端轉換爲GMT + Y - >客戶端GMT + Y
使用Granite,這意味着有2個修復程序需要做:修改Groovy用於客戶端將日期轉換爲GMT + 0的模板,並在服務器端添加Converter(轉換爲Date但帶時區轉換的日期)。 我已經在許多Flex項目上完成了這個補丁,它完美的工作。
- 1. DatePicker,Java GWT中的Date對象返回錯誤的值
- 2. 將Java對象數組返回給C++
- 3. 將C++對象返回給Java
- 4. D3 v4在傳入Date對象時爲scaleTime返回錯誤
- 5. Java JSlider.getvalue將良好的值返回給JTextField,對toolTipText錯誤
- 6. 如何將Date對象從Flex傳遞給JSP Servlet?
- 7. 返回對象錯誤
- 8. FOSRestBundle返回對象錯誤
- 9. date返回錯誤的結果在php
- 10. Date d = Calendar.getTime()返回錯誤的時間?
- 11. 當Pyamf返回Django對象時發生500錯誤Flex
- 12. 爲什麼Date.parse不返回Date對象?
- 13. Java返回對象
- 14. DATE(時間戳)返回錯誤月
- 15. PHP date()返回時間錯誤
- 16. 如何通過Spring MVC將Java Date對象傳遞給dojo DateTextBox並返回到Java?
- 17. Java的Date對象:夏令
- 18. 將findOne對象返回給模板
- 19. 將COM對象返回給JScript
- 20. 將參數指針返回給對象
- 21. ironjs:將對象返回給JS
- 22. 將對象向量返回給函數
- 23. 將JSON值返回給對象IONIC v2
- 24. \ sexpr返回r對象的錯誤值
- 25. PHP OOP - 錯誤的對象返回
- 26. $ .ajax()返回值[對象HTMLInputElement]的錯誤
- 27. NHibernate返回錯誤的對象列表
- 28. 錯誤的對象從參考返回
- 29. for循環返回錯誤的對象
- 30. JPA query.getResultList()返回錯誤的對象?
本聲明中的'我'是什麼意思:「我在標準時間內收到同一日期」?你的意思是Java服務器?或者Flex客戶端?或者是其他東西? – JeffryHouser
他是指Java VM的概率。他可能會使用Java的一個非常舊的版本,它尚未修補以解決幾年前實施的DST時間更改。 (一個特別討厭的「bug」,因爲它每年只會在特定的幾個星期內造成問題!) – Mifune