2013-05-27 3 views
3

자막 파일 (.srt)을 읽는 기본 Java 프로그램을 만들고 있는데 매번 Date 개체로 저장하려고합니다. 나는 정말로 시간, 분, 초 및 밀리 세컨드 (3 자리까지)를 추적 할 필요가있다. (있는 경우자바의 날짜 객체에 밀리 초를 저장하고 검색하는 방법은 무엇입니까?

return String.format("\nStart: %d:%d:%dText: %s\n", startDate.getHours(),startDate.getMinutes(), startDate.getSeconds(), text); 

내가 재차 getMilliseconds 비슷한 할 무언가를 찾고 있어요 : 나는 이런 식으로 뭔가를 할 수있는, 검색을 위해

String start = "00:01:01,604"; 
DateFormat sdf = new SimpleDateFormat("hh:mm:ss,SSS"); 
Date startDate = sdf.parse(start); 

: 나는이를 사용하여 저장할 수라고 생각 그것은 존재했다). 고마워요!

답변

3

Java에서 날짜 (시간, 분 등)의 일부를 액세스하는 데 권장되는 방법은 Calendar.get(Calendar.MILISECONDS)입니다 (javadocs 참조). 코드의 경우 다음과 같이 보입니다.

Date startDate = sdf.parse(start); 
Calendar calendar = Calendar.getInstance(); 
calendar.setTime(startDate); 
int milliseconds = calendar.get(Calendar.MILISECONDS); 

P.S. javadocsDate.getHours(), Date.getSeconds() 등의 메소드는 현재 사용되지 않습니다. 그들을 사용하지 마십시오 :).

+0

이것은 정확히 내가 찾고있는 것입니다. 고맙습니다! – Yesha

1

date.getTime()으로 전화하면 밀리 초가 걸립니다.

+1

getTime()은 에포크 시작 이후의 밀리 초를 반환합니다. OP는 지난 1 초 후부터 밀리 초를 원합니다. –

+2

일반적으로이 경우 '날짜'를 사용하는 것은 잘못된 것입니다. 일반 "long"또는 전용 기간 클래스 (예 : [Joda Time에서 가져온 것]) (http://joda-time.sourceforge.net/key_duration.html)를 사용하려고합니다. –

5

처리중인 항목이 날짜가 아닙니다. 그것을 처리하기 위해 Date 클래스를 사용하지 마십시오! 날짜는 당신이 신경 쓰지 않는 이상한 추가 규칙을 가지고 있으며, 그것은 당신을 쉽게 넘어 뜨릴 수 있습니다 (윤년, 윤초 및 시간대를 생각하십시오).

당신은 중 하나

  • 는 밀리 초를 유지하기 위해 long를 사용하고 (당신이 달력을 구현하지 않는, 그렇게 어렵지 않다) 자신에 또는
  • 사용을 계산을 처리해야 the one from Joda Time과 같은 기존 기간 클래스.
+1

+1 - **이 **는 정답입니다. –

+0

+1 음 .... 오른쪽 하나 ... –

1

항상 Date.getTime()을 사용하여 밀리 초 단위로 값을 가져올 수 있습니다. long 형식의 값을 반환합니다.

관련 문제