2011-10-25 11 views
2

時間情報を必要とするメソッドを持つJavaライブラリを使用しています。 なお、このように記載されている:深夜0時以降の時刻

public void function(byte[] time); 

時間:時間は最上位バイトで始まり、3バイト整数として午前0時から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

現在、グレゴリオ暦を作成します。それをクローンし、時間、分、秒、およびミリ秒をゼロに設定します。両方からミリ秒を取得し、差を見つけてから100分の1に変換します。

関連する問題