我有一個移動應用程序,它捕獲一個日期/時間並以毫秒爲單位發送給一個servlet。 - 例如,我在我的手機中捕獲12:55 AM並將其發送到我的服務器 -如何在沒有時區的情況下打印日期?
因此,我從發送的毫秒中構建日期並使用SimpleDateFormat打印它,但時間不同,它會打印8:55 AM 。 我知道問題是因爲我使用了2個不同的時區,我的問題是: 如何顯示那個時間而不應用任何時區來顯示同一時間?
在此先感謝
我有一個移動應用程序,它捕獲一個日期/時間並以毫秒爲單位發送給一個servlet。 - 例如,我在我的手機中捕獲12:55 AM並將其發送到我的服務器 -如何在沒有時區的情況下打印日期?
因此,我從發送的毫秒中構建日期並使用SimpleDateFormat打印它,但時間不同,它會打印8:55 AM 。 我知道問題是因爲我使用了2個不同的時區,我的問題是: 如何顯示那個時間而不應用任何時區來顯示同一時間?
在此先感謝
您需要使用日曆更改時區,但沒有API爲。
// Change a date in another timezone
public static Date changeTimeZone(Date date, TimeZone zone) {
Calendar first = Calendar.getInstance(zone);
first.setTimeInMillis(date.getTime());
Calendar output = Calendar.getInstance();
output.set(Calendar.YEAR, first.get(Calendar.YEAR));
output.set(Calendar.MONTH, first.get(Calendar.MONTH));
output.set(Calendar.DAY_OF_MONTH, first.get(Calendar.DAY_OF_MONTH));
output.set(Calendar.HOUR_OF_DAY, first.get(Calendar.HOUR_OF_DAY));
output.set(Calendar.MINUTE, first.get(Calendar.MINUTE));
output.set(Calendar.SECOND, first.get(Calendar.SECOND));
output.set(Calendar.MILLISECOND, first.get(Calendar.MILLISECOND));
return output.getTime();
}
鏈接:http://blog.vinodsingh.com/2009/03/date-and-timezone-in-java.html
我認爲這應該工作。我沒有廣泛測試它。
日曆和日期對象以毫秒爲單位存儲與UTC有關的日期信息。
(差值,以毫秒爲單位,當前時間和午夜,1970年1月1日之間UTC)
這意味着,日曆/日期的對象不存儲不同的時區不同的值。它們在內部始終使用相同的值...格式通常會發生變化。
也許你可以在你的本地/默認時區使用的SimpleDateFormat:
SimpleDateFormat sdf = new SimpleDateFormat("S")
Date d = sdf.parse(milliseconds);
您也可以嘗試更改日期格式的時區,直到您的預期輸出匹配。
sdf.setTimeZone(TimeZone.getTimeZone("GMT-8"));
System.out.println(sdf.toString());
sdf.setTimeZone(TimeZone.getTimeZone("GMT-4"));
System.out.println(sdf.toString());