所以我发送一个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