所以我發送一個Date.toString()到一個Android手機,服務器是在一個國家,我如何格式化時間,以便它顯示相對於手機的時區?如何將日期格式從一個國家設置到另一個國家?
例如,如果服務器向手機發送5點鐘的CDT,手機將顯示10點鐘的utc?
關於我應該如何實現這一點的任何想法?
所以我發送一個Date.toString()到一個Android手機,服務器是在一個國家,我如何格式化時間,以便它顯示相對於手機的時區?如何將日期格式從一個國家設置到另一個國家?
例如,如果服務器向手機發送5點鐘的CDT,手機將顯示10點鐘的utc?
關於我應該如何實現這一點的任何想法?
如果通過字符串發送不是絕對的要求,另一種解決方案是發送UTC毫秒並根據用戶時區重新構建時間。
// on the sever side
final Date serverTime = new Date();
sendToClient(serverTime.getTime());
System.out.println("Time sent by server: " + serverTime);
// on the client
final long ms = receiveFromServer();
final Date clientTime = new Date();
clientTime.setTime(ms);
System.out.println("Time received by client: " + clientTime);
我將如何重構這個客戶端在java – molleman
更新後,試一試。也讀這篇文章:http://stackoverflow.com/questions/2697549/how-to-make-date-locale-independent –
如果你能夠發送以毫秒爲單位的UTC時間,然後看看DateUtils.formatDateTime(...)這將格式化並返回使用本地約定的字符串。
對於flags
參數使用DateUtils.FORMAT_XXX
常量來指定要包含哪些組件(工作日,年份等)。
您是否可以控制服務器如何格式化時間? – Squonk
是的,我有完整的控制權限,目前我只發送字符串,發送它的最佳方式是什麼,所以它可以重建客戶端? – molleman