2012-02-06 15 views

risposta

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

l'invitiamo a controllare Joda Tempo, in alternativa (ma molto popolari) per la data e l'ora standard di Java API:

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

Utilizzando Joda tempo, credo che questo è ciò che si cosa:

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); 
    } 
} 

Hai solo bisogno di conoscere l'ID standard per il fuso orario in questione, come ad esempio UTC.

+2

Grazie per la risposta . Sto scrivendo una piccola classe e non voglio importare pacchetti joda per questa piccola classe. Puoi suggerire in altro modo? Grazie ancora – Raj

4

ho scritto il seguente programma per ottenere il tempo per tutti i Timezones disponibili, vedere se questo aiuta ...

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

verifica questo. spero che possa essere d'aiuto

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

si prega di imparare le convenzioni di denominazione java e attenersi a loro – kleopatra

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 fornisce alcune nuove classi nel pacchetto 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

In Java 8, è possibile utilizzare il metodo ZonedDateTime.now(ZoneId zone):

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

System.out.println(localTime);