내가 속한 서버에 연결할 xml-rpc API가 있습니다. 거기에는 "player.seen"이라는 함수가 있는데 "player"가 마지막으로 보았을 때의 유닉스 타임 스탬프를 반환합니다. 이 숫자를 사용하여 사용자가 본 후 얼마나 오랫동안 표시했는지 표시하려고합니다. 어떤 이유로 들어, 적절한 값을 제공하지 않습니다 :Unix 타임 스탬프에서 시간 변환
오래된 코드 : 나는 여러 가지 방법으로 스크립트를 재 작성했지만,이를 백업 잊은 http://pastebin.com/tPe6mkyJ
합니다. 당신이이 변환을 수행하는 더 좋은 방법을 안다면 궁금합니다.
EDIT : joda-Time을 사용하여 코드를 편집 한 후에도 여전히 잘못된 값이 표시됩니다. 예를 들어, 플레이어 "pomi44"는 게임 내/본 명령에 따라 15 일, 9 시간 10 분 동안 보이지 않았습니다. 내 프로그램에서 "1 일, 18 시간, 18 분, 10 초"를 출력합니다.
새로운 코드 : 나는 "1000"대신 다른 숫자를 시도
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.");
하지만, 모두가 잘못된 값을 제공합니다. 예를 들어, 플레이어 "pomi44"는 게임 내/본 명령에 따라 15 일, 9 시간 및 10 분 동안 보이지 않았습니다. 내 프로그램은 pomi44에 대해 "1 일, 18 시간, 18 분, 10 초"를 출력합니다.
미리 감사드립니다. 당신은 몇 가지 정보가 손실 될 수있는 위의 문으로
int TimeStamp_now = (int) curDate.getTime();
:
Joda 타임 jodatime 필요없이 그것을해야 갈 수있는 방법입니다 작업을위한 유틸리티 무리가 있다고 생각 시간과 함께 ... 오히려 나는 당신이 두 Instants를 만들고, [Interval] (http://joda-time.sourceforge.net/key_interval.html)을 만든 다음,이를 기간으로 변환하여 추출하고 싶다고 생각합니다. 다른 필드 (일, 시간 등). 그러나 나는 틀릴 수있다 :) – Charlie