无法获得澳大利亚的日期/时间

时间:2013-11-28 01:30:43

标签: java android

我使用以下代码生成正确的澳大利亚日期/时间。但它继续回归GMT时间。

任何想法都会很棒

Date currentTime = Calendar.getInstance(TimeZone.getTimeZone("GMT+10:00")).getTime()

2 个答案:

答案 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