java - 需要帮助在 Java 中转换 UTC 日期字符串

标签 java android google-app-engine datetime jodatime

我有一个游戏客户端 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/

相关文章:

python - 在 App Engine 中接收电子邮件附件 Unicode 文本文件出现 Python 错误

java - sql 查询没有返回结果(当它应该返回时)并且没有错误

android - Room SQLite 数据库 - 删除所有 LIKE % :param%

java - 共享重复方法的单独对象

java - 覆盖 ClassNames 函数而不创建扩展 ClassName 的新类

google-app-engine - 是否可以使用从不同版本构建的 Go 包?

java - 登录后 session ID 更改和属性复制

java - Liveconnect Applet 问题

java - 在应用程序关闭后保持广播接收器运行

java - 使用 Google Account UserService 时如何更新 App Engine 应用程序名称