2011-10-25 4 views
2

시간 정보를 원하는 메소드가있는 Java 라이브러리를 사용하고 있습니다. 그것은 같이 설명된다 :자정 이후 시간

public void function(byte[] time); 

시간 : 시간은 최상위 바이트부터 시작하여 3 바이트 정수로 시부 1/100 초에 제공된다.

어떻게 해야할지 모르겠다. 시간은 milliseconds(Sysem.currentTimeInMillisecond)입니다. 하지만 그건 1970 년 1 월 1 일 이후로 몇 밀리 초를줍니다.

아무도 도와 줄 수 있습니까?

답변

1

다음은 방금 작성한 코드입니다. 나는 충분히 스스로 설명 할 수 있다고 생각한다. int를 바이트 배열로 변환하는 논리가 DataOutputStream.writeInt()

Calendar c = Calendar.getInstance(); //now 

    Calendar m = Calendar.getInstance(); //midnight 
    m.set(Calendar.HOUR_OF_DAY, 0); 
    m.set(Calendar.MINUTE, 0); 
    m.set(Calendar.SECOND, 0); 
    m.set(Calendar.MILLISECOND, 0); 

    int diff = (int) (c.getTimeInMillis() - m.getTimeInMillis()) ; 
    int v = diff/10; 

    byte[] bytes = new byte[4]; 
    bytes[0] = (byte) ((v >>> 24) & 0xFF); 
    bytes[1] = (byte) ((v >>> 16) & 0xFF); 
    bytes[2] = (byte) ((v >>> 8) & 0xFF); 
    bytes[4] = (byte) ((v >>> 0) & 0xFF); 
+2

마지막 줄은 바이트 [3]이어야합니다. – oers

0

현재 그레고리력을 만듭니다. 복제하고 시간, 분, 초 및 밀리 초를 0으로 설정하십시오. 둘 다에서 밀리 초를 가져 와서 차이를 찾은 다음 백분율로 변환하십시오.

관련 문제