2

アラームアプリケーションがあり、アラームをデータベースに保存しています。すべてのアラームは正常に機能し、値(ミリ秒)は正しい数値として保存されます。今、私は自分のデータベースからそれらの時間を表示しようとしています。そして、私はカレンダーを使用して、時刻形式で時刻を取得しています。

Calendar calendar = Calendar.getInstance();
SimpleDateFormat timeformat = new SimpleDateFormat("HH:mm");

milis = c.getInt(2);
calendar.setTimeInMillis(milis);
vreme = timeformat.format(calendar.getTime());
listavreme.add(vreme);

CursorMilisは(テスト済み)から正しい数値として取得されますがgetTime()、HH:mm形式で表示すると、常に1時間余分に表示されます。したがって、milis値が:61200000(17:00)の場合、カレンダーには18:00と表示されます。私はそれを理解することはできません。

4

2 に答える 2

3

TimeZoneをあなたの場所に設定する必要があると思います

timeformat.setTimeZone(TimeZone.getTimeZone("GMT"));

例えば

于 2013-02-01T15:36:51.420 に答える
1

Calendar.getInstance() は TimeZone に関連付けられます。特に指定しない場合は、JRE のデフォルトが使用されます。あなたのものはGMT + 1だと思います。したがって、タイムゾーンなしで生のミリ秒を(正しく)保存しているため、その時間を失っています。試す:

    TimeZone utc = TimeZone.getTimeZone("UTC");
    カレンダー calendar = Calendar.getInstance(utc);
于 2013-02-01T15:40:27.240 に答える