我還沒有找到一個簡單的方法。我見過很多不同的例子,其中一些實際上彼此衝突,另一些則使用不推薦的調用,我不知道爲什麼這麼難以找到一個堅實的答案。Android:將2個不同的時區轉換爲UTC,並計算它們在天數,小時和分鐘上的差異
所以我必須從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();
}
...和那裏的東西隨着時間的差異是不準確的是錯誤的時區轉換。任何幫助深表感謝。提前致謝。
你能更具體地說明問題是什麼嗎? – Phil
問題是我的2個時間戳與不同時區之間的時差是不準確的。 – askilondz
我可以想到至少有一個問題,EST是復活節標準時間,當我們切換到夏令時時會發生什麼情況,這會產生正確的時區EDT,可能會給您至少一個小時的時間。 : - /考慮到原帖的時間,這可能是一個相關的答案! –