私はまだこれに対する直接的なアプローチを見つけていません。私はたくさんの異なる例を見てきました.いくつかは実際に互いに衝突し、他のものは非推奨の呼び出しを使用しています.なぜこれが確かな答えを見つけるのが難しいのか分かりません.
したがって、次の形式の Web サービスからタイムスタンプが返されます。
"yyyy-MM-dd hh:mm:ss"
*タイムゾーンはタイムスタンプの一部ではありませんが、時間は東部時間です。
私が知りたいのは、Web サービスのタイム スタンプ (EST) と、使用されている電話の現在のタイム スタンプ (任意のタイム ゾーンにある可能性があります) との時差を計算する最良の方法です。次に、その差を残り日数、残り時間数、残り分数でカウントダウンとして表示します。
現在、私は次のようなことをしています:
public String getTimeLeft(String date) {
StringBuilder dateString = new StringBuilder();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("EST"));
Date dateObj = formatter.parse(date);
Time time = new Time(Time.getCurrentTimezone());
time.set(dateObj.getTime());
time.timezone = Time.TIMEZONE_UTC;
long timeInMill = time.normalize(true);
endCal.setTimeInMillis(timeInMill);
currCal.setTime(new Date());
long timeDiff = endCal.getTimeInMillis() - currCal.getTimeInMillis();
int days = (int) (timeDiff / (1000*60));
int hours = (int) ((timeDiff / (1000*60*60))%24);
int minutes = (int) ((timeDiff % (1000*60*60)) / (1000*60));
dateString.append(days + (days == 1 ? " DAY " : " DAYS "));
dateString.append(hours + (hours == 1 ? " HOUR " : " HOURS "));
dateString.append(minutes + (minutes == 1 ? " MINUTE " : " MINUTES "));
return dateString.toString();
}
...時差が正確ではないため、タイムゾーンの変換に問題があります。どんな助けでも大歓迎です。前もって感謝します。