我有一个游戏客户端 Google App Engine服务器。我的服务器向客户端发送 UTC timedate 字符串,自纪元以来的毫秒数,表示上次播放的日期戳。我希望我的客户报告自上次播放以来有多少天/小时/分钟。我的 iOS 客户端可以正常工作,但 Android 客户端却无法正常工作。我尝试了很多选项,其中一些使用 Joda-Time一些直接使用 Java 的 Date 对象,时间总是会偏移几个小时。奇怪的是时间不是整点的。可能是 2 小时 34 分钟。所以我不认为我的问题只是时区的问题,或者它会是整点的?
本质上,我需要获取这个 UTC 时间,然后获取 UTC 中的当前时间..比较差异以获得天/小时/分钟
这是我所拥有的,我正在使用 Joda-Time图书馆:
例如,我的服务器向我发送此字符串“1392392591.0”(恰好是 UTC 时间,太平洋标准时间大约上午 7:45)
public String convertDateString ( String date ) {
Float gameEpoch = Float.parseFloat( date );
DateTime now = new DateTime();
DateTime gameTime = new DateTime(gameEpoch.longValue() * 1000 );
Period p = new Period(gameTime, now, PeriodType.dayTime());
String dateString = "";
if(p.getDays() > 0)
dateString = (p.getDays() + " days " + p.getHours() + " hours ago");
else if(p.getHours() > 0)
dateString = (p.getHours() + " hours " + p.getMinutes() + " minutes ago");
else if(p.getMinutes() > 0)
dateString = (p.getMinutes() + " minutes ago");
else
dateString = "Just Now";
return dateString;
}
最佳答案
不要从String
转换为Float
。 float 只有 7 位有效数字,因此 gameEpoch
总是不精确。使用double
,或者更好的是,long
。
关于java - 需要帮助在 Java 中转换 UTC 日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21784811/