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

Dan*_*iel 2 java google-app-engine datetime android jodatime

我有一个游戏客户端和一个Google App Engine服务器.我的服务器向客户端发送UTC时间日期字符串,该字符串是自纪元以来的毫秒,表示最后一次播放的日期戳.我希望我的客户报告自上次比赛以来的天/小时/分钟.我在iOS客户端工作但无法在Android中使用它.我尝试了很多选项,有些使用Joda-Time一些直接Java的Date对象,时间总是偏移几个小时.奇怪的是,时间不是时间关闭..可能会关闭2小时34分钟..所以我不认为我的问题只是一个时区的事情,或者它会在一小时没有?

基本上我需要获得UTC时间,然后以UTC格式获取当前时间.比较差异以获得天/小时/分钟

这就是我所拥有的,我正在使用Joda-Time库:

例如我的服务器发送给我这个字符串"1392392591.0"(恰好是太平洋标准时间上午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;
    }
Run Code Online (Sandbox Code Playgroud)

Ton*_*ony 5

不要从a转换String为a Float.浮点数只有7位有效数字,因此gameEpoch总是不精确.使用a double或更好的a long.