나는 카운트 다운 타이머를 만들고 있는데, mm : dd : yyyy : hour : minute : sec 형식으로 2 개의 날짜 (현재 및 종료 날짜)를 가지고 있으며 남은 시간을 표시해야합니다. 시간 - 현재 날짜 : 효과적으로 그
종료 날짜입니다 시간날짜 타이머를 만드는 방법
내가 (밀리 초) 두 날짜를 변환 뺀 다음 날짜로 다시 변환 생각하지만 효과적으로에서이를 구현하는 방법 번거 로움 너무 많은 것 같다 자바?
나는 카운트 다운 타이머를 만들고 있는데, mm : dd : yyyy : hour : minute : sec 형식으로 2 개의 날짜 (현재 및 종료 날짜)를 가지고 있으며 남은 시간을 표시해야합니다. 시간 - 현재 날짜 : 효과적으로 그
종료 날짜입니다 시간날짜 타이머를 만드는 방법
내가 (밀리 초) 두 날짜를 변환 뺀 다음 날짜로 다시 변환 생각하지만 효과적으로에서이를 구현하는 방법 번거 로움 너무 많은 것 같다 자바?
는 joda-time
프레임 워크 당신
String date = "02:13:2013:14:45:42"; // one of these is your end time
String date2 = "02:13:2013:14:45:49"; // the other gets smaller every time as you approach the end time
// 7 seconds difference
DateTimeFormatter format = DateTimeFormat.forPattern("MM:dd:yyyy:HH:mm:ss"); // your pattern
DateTime dateTime = format.parseDateTime(date);
System.out.println(dateTime);
DateTime dateTime2 = format.parseDateTime(date2);
System.out.println(dateTime2);
Duration duration = new Duration(dateTime, dateTime2);
System.out.println(duration.getMillis());
인쇄
2013-02-13T14:45:42.000-05:00
2013-02-13T14:45:49.000-05:00
7000
그래서 당신이 DateTime
객체로 날짜 문자열을 구문 분석하고 몇 시간 단위의 시간 차이를 계산하기 위해 Duration
객체를 사용할 수 있도록하자 .
당신이 대안 I는 밀리 두 날짜 변환 뺀 생각
System.out.println(duration.toPeriod().get(DurationFieldType.seconds()));
사용자 상태
(요구되는 정밀도에 따라)를
Interval
또는Period
객체를 사용 다시 날짜로 변환합니다.
왜 다시 변환해야합니까? 당신은 이미 그것을 가지고 있습니다. 그 사이에 관심이 있습니다.
내 응용 프로그램에서 남은 시간을 날짜 형식으로 표시하려고하기 때문에 날짜로 다시 변환합니다 –
@AkshatAgarwal 기간은 날짜가 아니므로 날짜와 함께하는 '시간 : 분 : 초 ...'형식으로 표시하는 것은 의미가 없습니다. 'Period' 객체는 언제든지 사용할 수있는'get' 메소드를 가지고 있습니다. 예를 들어, 시간, 분, 초를 표시 할 수 있습니다. –
@SotiriosDelimanolis 실제로 카운트 다운 타이머가있는 경우 h : m : s 형식으로 결과를 표시하려는 것이 좋습니다. 하지만 당신 말이 맞아, OP는 String 출력을 만들기 위해 Duration의 getter 메소드를 사용해야합니다;) – MadProgrammer
Calendar until = Calendar.getInstance();
until.set ("YYYY", "DD", "HH", "MM", "SS");
getTimeDifference (until); 잘
private String getTimeDifference(Calendar until) {
Calendar nowCal = (Calendar) until.clone();
nowCal.clear();
Date nowDate = new Date(System.currentTimeMillis());
nowCal.setTime(nowDate);
int sec = until.get(Calendar.SECOND) - nowCal.get(Calendar.SECOND);
int min = until.get(Calendar.MINUTE) - nowCal.get(Calendar.MINUTE);
int hrs = until.get(Calendar.HOUR) - nowCal.get(Calendar.HOUR);
String timeDiff = hrs+":"+min+":"+sec;
return timeDiff;
}
날짜/시간의 차이는 여러 가지 요인 (일광 절약 시간 제외)을 고려해야하는 복잡한 과정이므로 두 날짜가 멀수록 문제가 악화됩니다. 서로의 밀리 초를 뺀 것이 매우 정확한 결과를 초래하지는 않습니다.JodaTime- IMHO와 같은 전용 라이브러리를 사용하는 것이 더 좋습니다. – MadProgrammer
. 사실 java.util.Date는 milliseconds를 나타내는 long 주위의 래퍼 일 뿐이다. 또한 조다 타임 (Joda Time)의 일부가 당신에게 흥미있을 수도 있습니다. – SJuan76
[PrettyTime] (http://ocpsoft.org/prettytime/)과 같은 것이 도움이 될 수도 있습니다 – MadProgrammer