-1

私は現在、時間を達成するために次の行を使用しています:System.currentTimeInMilis。私はそれがタイムゾーンを考慮していないことに気づきました、またはそれは時間までにそれ自体がアンドロイド電話と一致しませんが、エミュレーターではそれは一致します.sそれでアンドロイド時計をそれ自身にする別のタイプの方法はありますか?それで、ユーザーが自分の電話を時計に内蔵して調整すると、それもそれに影響しますか?

float getTime()
    {
        Calendar cal = new GregorianCalendar();
        cal.setTimeInMillis(System.currentTimeMillis());
        cal.setTimeZone(TimeZone.getDefault());
        return cal.getTimeInMillis();
    }
4

1 に答える 1

1

currentTimeMillisのドキュメントを読んでください。タイムゾーンがあり、たまたま UTC (Unix タイムスタンプのデフォルト) です。

別のタイムゾーンに変換したい場合は、Java Calendar および TimeZone クラスを利用できます。

Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(System.currentTimeMillis());
cal.setTimeZone(TimeZone.getDefault());

または、新しい GregorianCalendar インスタンスを作成することもできます。デフォルトでは、その TimeZone はローカルのもの (デバイスで設定されている) と一致し、時刻は「現在」に設定されます。

現在のタイム ゾーンとロケールを文字列として取得する方法は他にもあります。DateUtilsを見てください。

EDITカレンダーの使い方の説明

Calendar.getTimeMillis() のドキュメントを参照してください。このメソッドは、たまたまタイム ゾーンが UTC である Unix タイム スタンプを再び返します。

正しい値を取得するには、代わりに Calendar.get() メソッドを使用する必要があります。カレンダー オブジェクトを介して正しいタイム ゾーンで現在の時間を取得するには、次の例を参照してください。

int hour = cal.get(Calendar.HOUR_OF_HAY);

カレンダーのドキュメントを読んでください。年、月、分、秒などの値を取得するのに役立つ HOUR_OF_DAY のようなフィールドがたくさんあります。

于 2012-07-14T19:11:50.520 に答える