我使用以下代码生成正确的澳大利亚日期/时间。但它继续回归GMT时间。
任何想法都会很棒
Date currentTime = Calendar.getInstance(TimeZone.getTimeZone("GMT+10:00")).getTime()
答案 0 :(得分:2)
试试这个:
Calendar calendar = new GregorianCalendar();
TimeZone timeZone = TimeZone.getTimeZone("Australia/Sydney");
calendar.setTimeZone(timeZone);
Date currentTime = calendar.getTime();
查看this tutorial以获取所有时区的列表以及更多示例。
答案 1 :(得分:0)
(a)澳大利亚有几个不同的时区,有不同的抵消。见this list。
您应该按名称而不是偏移量指定时区,以便日期时间库可以帮助Daylight Saving Time或其他异常。
(b)caseyscarborough给了a correct answer。这是相同类型的代码,但在Joda-Time 2.3。
中org.joda.time.DateTimeZone adelaideTimeZone = org.joda.time.DateTimeZone.forID( "Australia/Adelaide" );
org.joda.time.DateTime adelaideDateTime = new org.joda.time.DateTime( adelaideTimeZone ); // Standard time is +09:30 of UTC.
System.out.println( "Now in Adelaide: " + adelaideDateTime );
System.out.println( "Same moment in UTC: " + adelaideDateTime.toDateTime( org.joda.time.DateTimeZone.UTC ) );
跑步时......
Now in Adelaide: 2013-11-28T14:21:21.192+10:30
Same moment in UTC: 2013-11-28T03:51:21.192Z