2011-07-30 70 views
0

所以我发送一个Date.toString()到一个Android手机,服务器是在一个国家,我如何格式化时间,以便它显示相对于手机的时区?如何将日期格式从一个国家设置到另一个国家?

例如,如果服务器向手机发送5点钟的CDT,手机将显示10点钟的utc?

关于我应该如何实现这一点的任何想法?

+0

您是否可以控制服务器如何格式化时间? – Squonk

+0

是的,我有完整的控制权限,目前我只发送字符串,发送它的最佳方式是什么,所以它可以重建客户端? – molleman

回答

1

如果通过字符串发送不是绝对的要求,另一种解决方案是发送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); 
+0

我将如何重构这个客户端在java – molleman

+0

更新后,试一试。也读这篇文章:http://stackoverflow.com/questions/2697549/how-to-make-date-locale-independent –

0

如果你能够发送以毫秒为单位的UTC时间,然后看看DateUtils.formatDateTime(...)这将格式化并返回使用本地约定的字符串。

对于flags参数使用DateUtils.FORMAT_XXX常量来指定要包含哪些组件(工作日,年份等)。