何らかの理由で、タイムスタンプを正しく表示するのに常に苦労していますが、とにかくここに問題があります。
からイベントを取得しており、カレンダー イベントCalendar Provider API
などの一部のイベントUS Holidays
は UTC であるため、タイムスタンプはデバイス上にあるべきものではありません (もちろん、デバイスがそのタイムゾーンにある場合を除きます)。
これのタイムスタンプは1374105600000
707/18/2013 00:00:00 UTC
月 18 日の午前 0 時 (UTC) です。私が欲しいのは、7 月 18 日の午前 0 時のローカル デバイス時間のタイムスタンプです。
これが私がすることです
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
cal.setTimeInMillis(time);
long offset = tz.getRawOffset(); //gives me -18000000 5hr difference since I am in EST which I think is actually wrong because it should be a 4hr difference now with DST
これをUTCタイムスタンプに追加すると
long local = time+offset;
それは私に間違った時間を与えますjuly 17th at 3:00PM
時間を差し引くと
long local = time-offset;
私はまだ間違った時間を取得していますが、タイムゾーンの違いjuly 18th at 1:00AM
がある人にとってはうまくいかないため、減算する必要さえないと思います.+
何が間違っているのですか? 正しい時刻を取得するために正しいオフセットを取得できないのはなぜですか?
私もこれを参考に使っていましたリンク