我有一個遊戲客戶端Google App Engine服務器。我的服務器向客戶端發送一個UTC timedate字符串,這個字符串自表示最後一次播放的日期戳記的紀元以來就是毫秒。我希望我的客戶報告自上次播放以來有多少天/小時/分鐘。我有這個工作在我的iOS客戶端,但不能讓它在Android中工作。我已經嘗試了很多選擇,有些使用Joda-Time某些Date對象是直的Java,時間總是偏移幾個小時。奇怪的是,時間不是一小時..可能會關閉2小時34分鐘..所以我不認爲我的問題只是一個時區的事情,否則會在一小時內沒有?需要幫助轉換Java中的UTC日期字符串
基本上我需要得到這個UTC時間,然後獲得UTC當前時間以及..比較差獲得天/小時/分鐘
這裏就是我的,我使用的Joda-Time庫:
例如我的服務器發送了我這個字符串「1392392591.0」(恰好是UTC時間大約上午7:45 PST)
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;
}
'我的服務器向客戶端發送UTC時間日期字符串,這是自epoch'毫秒。不。自從Unix [epoch] [1],而不是*毫秒*以來,客戶端正在接收*秒*。顯然你知道這一點,必須錯誤輸入,因爲你的示例代碼正確乘以1000.我正在爲其他讀者做這個筆記。 –
我建議在'1000'上增加一個'L'作爲'1000L'。使用「long」原始類型進行數學計算時,這是個好習慣,以避免數據丟失。添加一個'L'也有助於使代碼自動記錄,這提醒我們正在處理多頭,而不是更常見的整數。 –
會這樣做,謝謝羅勒 – Daniel