2012-02-06 83 views

回答

11
java.util.TimeZone tz = java.util.TimeZone.getTimeZone("GMT+1"); 
java.util.Calendar c = java.util.Calendar.getInstance(tz); 

System.out.println(c.get(java.util.Calendar.HOUR_OF_DAY)+":"+c.get(java.util.Calendar.MINUTE)+":"+c.get(java.util.Calendar.SECOND)); 
12

我會鼓勵你檢查出約達時間,另一種(但很受歡迎),以標準的Java日期和時間API:

http://joda-time.sourceforge.net/index.html

使用約達時間,我想這是你什麼:

import org.joda.time.DateTime; 
import org.joda.time.DateTimeZone; 

public class TimeZoneDemo { 

    public static void main(String[] args) { 

    DateTime now = new DateTime(System.currentTimeMillis(), DateTimeZone.forID("UTC")); 
    System.out.println("Current time is: " + now); 
    } 
} 

你只需要知道在該時間段,如UTC標準的ID。

+2

感謝您的答覆。我正在寫一個小班,我不想爲這個小班輸入joda包。你可以建議任何其他方式?再次感謝 – Raj 2012-02-06 07:30:45

4

我寫了下面的程序來獲得時間所有可用的時區,看看是否可以幫助...

String[] zoneIds = TimeZone.getAvailableIDs(); 
    for (int i = 0; i < zoneIds.length; i++) { 
    TimeZone tz = TimeZone.getTimeZone(zoneIds[i]); 
    System.out.print(tz.getID() + " " + tz.getDisplayName()); 
     Calendar calTZ = new GregorianCalendar(tz); 
     calTZ.setTimeInMillis(new Date().getTime()); 
     Calendar cal = Calendar.getInstance(); 
     cal.set(Calendar.YEAR, calTZ.get(Calendar.YEAR)); 
     cal.set(Calendar.MONTH, calTZ.get(Calendar.MONTH)); 
     cal.set(Calendar.DAY_OF_MONTH, calTZ.get(Calendar.DAY_OF_MONTH)); 
     cal.set(Calendar.HOUR_OF_DAY, calTZ.get(Calendar.HOUR_OF_DAY)); 
     cal.set(Calendar.MINUTE, calTZ.get(Calendar.MINUTE)); 
     cal.set(Calendar.SECOND, calTZ.get(Calendar.SECOND)); 
     cal.set(Calendar.MILLISECOND, calTZ.get(Calendar.MILLISECOND)); 
    System.out.println(" "+cal.getTime()); 
2

檢查。希望它會有所幫助。

TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai"); 
    Calendar cal = Calendar.getInstance(); 

    int LocalOffSethrs = (int) ((cal.getTimeZone().getRawOffset()) *(2.77777778 /10000000)); 

    int ChinaOffSethrs = (int) ((tz.getRawOffset()) *(2.77777778 /10000000)); 

    TimeZone tz1 = TimeZone.getTimeZone("US/Central"); 
    String ss =cal.getTimeZone().getDisplayName(); 

    System.out.println("Local Time Zone : " + ss); 
    System.out.println("China Time : " + tz.getRawOffset()); 

    System.out.println("Local Offset Time from GMT: " + LocalOffSethrs); 
    System.out.println("China Offset Time from GMT: " + ChinaOffSethrs); 

    cal.add(Calendar.MILLISECOND,-(cal.getTimeZone().getRawOffset())); 
    //cal.add(Calendar.HOUR,- LocalOffSethrs); 

    cal.add(Calendar.MILLISECOND, tz.getRawOffset()); 
    Date dt = new Date(cal.getTimeInMillis());     
    System.out.println("After adjusting offset Acctual China Time :" + dt); 
+4

請學習java命名約定並堅持下去 – kleopatra 2012-03-20 13:49:14

1
import java.text.SimpleDateFormat; 
import java.util.GregorianCalendar; 

SimpleDateFormat dateFormat = new SimpleDateFormat(); 
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Seoul")); 
GregorianCalendar cal = Calendar.getInstance(); 
cal.add(Calendar.DATE, 0); 

System.out.println(dateFormat.format(cal.getTime())); 
6

的Java 1.8提供了一些新的類在包java.time

package learning.java8; 

import java.time.Instant; 
import java.time.ZoneId; 
import java.time.ZonedDateTime; 
import java.time.format.DateTimeFormatter; 

import org.junit.Test; 

public class JavaTimeLT { 

    @Test 
    public void zonedDataTimeExample() { 
     final ZoneId zoneId = ZoneId.of("Europe/Zurich"); 
     final ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.now(), zoneId); 
     System.out.println(zonedDateTime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME)); 
    } 
} 
0

在Java 8中,您可以使用ZonedDateTime.now(ZoneId zone)方法:

ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("Asia/Tokyo")); 
LocalTime localTime = zonedDateTime.toLocalTime(); 

System.out.println(localTime);