私がメンバーになっているサーバーには、接続先の xml-rpc API があります。その中には、「プレーヤー」が最後に見られたときの Unix タイムスタンプを返す「player.seen」という関数があります。この数字を使用して、ユーザーが表示されてからの経過時間を表示しようとしています。何らかの理由で、適切な値を与えていません:
古いコード: http://pastebin.com/tPe6mkyJ
さまざまな方法でスクリプトを書き直そうとしましたが、それらをバックアップするのを忘れていました。この変換を達成するためのより良い方法を知っている人がいるかどうか疑問に思っています。
編集: joda-Time を使用するようにコードを編集した後、まだ正しくない値が取得されます。たとえば、プレイヤー「pomi44」は、ゲーム内の /seen コマンドによると、15 日 9 時間 10 分間見られていません。私のプログラムは「1 日 18 時間 18 分 10 秒」を出力します。
新しいコード:
Object[] params1 = new Object[]{API_KEY, playerName};
String result = (String) client.execute("player.seen", params1);
int timeStamp = Integer.parseInt(result);
Date curDate = new Date();
DateTime start = new DateTime(timeStamp * 1000L);
DateTime end = new DateTime(curDate.getTime());
Period period = new Period(start, end);
int seconds = period.getSeconds();
int minutes = period.getMinutes();
int hours = period.getHours();
int days = period.getDays();
System.out.println(days + " days, " + hours + " hours, " + minutes + " minutes, " + seconds + " seconds.");
「1000」の代わりに別の数字を試してみましたが、すべて間違った値が返されます。たとえば、プレイヤー「pomi44」は、ゲーム内の /seen コマンドによると、15 日 9 時間 10 分間見られていません。私のプログラムは、pomi44 に対して「1 日 18 時間 18 分 10 秒」を出力します。
前もって感謝します。