2011-11-23 15 views

risposta

12

Se si digita google "fuso orario modifica data Java" o "fuso orario cambio data JavaScript". Avrete uno dei tuoi risultati:

In Java (fonte: http://www.coderanch.com/t/417443/java/java/Convert-Date-one-timezone-another)

Date date = new Date(); 

DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z"); 
formatter.setTimeZone(TimeZone.getTimeZone("CET")); 

// Prints the date in the CET timezone 
System.out.println(formatter.format(date)); 

// Set the formatter to use a different timezone 
formatter.setTimeZone(TimeZone.getTimeZone("IST")); 

// Prints the date in the IST timezone 
System.out.println(formatter.format(date)); 

Javascript (fonte: http://www.techrepublic.com/article/convert-the-local-time-to-another-time-zone-with-this-javascript/6016329)

// function to calculate local time 
// in a different city 
// given the city's UTC offset 
function calcTime(city, offset) { 

    // create Date object for current location 
    d = new Date(); 

    // convert to msec 
    // add local time zone offset 
    // get UTC time in msec 
    utc = d.getTime() + (d.getTimezoneOffset() * 60000); 

    // create new Date object for different city 
    // using supplied offset 
    nd = new Date(utc + (3600000*offset)); 

    // return time as a string 
    return "The local time in " + city + " is " + nd.toLocaleString(); 

} 

// get Bombay time 
alert(calcTime('Bombay', '+5.5')); 
0
//Convert date from one zone to another 
/* 
$zone_from='Asia/Kolkata'; 

$zone_to='America/Phoenix'; 

date_default_timezone_set($zone_from); 

$convert_date="2016-02-26 10:35:00"; 

echo $finalDate=zone_conversion_date($convert_date, $zone_from, $zone_to); 

*/ 

function zone_conversion_date($time, $cur_zone, $req_zone) 
{ 
    date_default_timezone_set("GMT"); 
    $gmt = date("Y-m-d H:i:s"); 

    date_default_timezone_set($cur_zone); 
    $local = date("Y-m-d H:i:s"); 

    date_default_timezone_set($req_zone); 
    $required = date("Y-m-d H:i:s"); 

    /* return $required; */ 
    $diff1 = (strtotime($gmt) - strtotime($local)); 
    $diff2 = (strtotime($required) - strtotime($gmt)); 

    $date = new DateTime($time); 
    $date->modify("+$diff1 seconds"); 
    $date->modify("+$diff2 seconds"); 

    return $timestamp = $date->format("Y-m-d H:i:s"); 
} 
2
TimeZone fromTimezone =TimeZone.getTimeZone(from); 
TimeZone toTimezone=TimeZone.getTimeZone(to); 

long fromOffset = fromTimezone.getOffset(calendar.getTimeInMillis()); 
long toOffset = toTimezone.getOffset(calendar.getTimeInMillis()); 

long convertedTime = calendar.getTimeInMillis() - (fromOffset - toOffset); 
7

java.time

Le vecchie classi data-ora sono mal progettate, confuse e problematiche. Evitalo.

Utilizzare classi moderne: il framework java.time integrato in Java 8 e versioni successive. Trova back-ports for earlier Java 6 & 7 e for Android.

Un Instant è un momento nella sequenza temporale in UTC.

Instant now = Instant.now(); 

Applicare un fuso orario (ZoneId) per ottenere un ZonedDateTime.

Non utilizzare mai le abbreviazioni di zona 3-4 lettere come EST o IST. Non sono né standardizzati né unici (!). Utilizzare proper time zone names, costruito in un formato continent/region come Asia/Kolkata, Pacific/Auckland, America/Los_Angeles.

ZoneId zoneId_Montreal = ZoneId.of("America/Montreal"); 
ZonedDateTime zdt_Montreal = ZonedDateTime.ofInstant(instant , zoneId_Montreal); 

Applicare un fuso orario diverso per generare un altro ZonedDateTime regolata a quel fuso orario. Chiama il numero withZoneSameInstant.

ZoneId zoneId_Paris = ZoneId.of("Europe/Paris"); // Or "Asia/Kolkata", etc. 
ZonedDateTime zdt_Paris = zdt_Montreal.withZoneSameInstant(zoneId_Paris); 

Se si vuole tornare a UTC, chiedere un Instant.

Instant instant = zdt_Paris.toInstant(); 
0

codice per ottenere Berlino Tempo e convertirlo in UTC Tempo

Calendar sc = Calendar.getInstance(TimeZone.getTimeZone("Europe/Berlin")); 
      String strt = null; 
      SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'");  
      sf.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));  
      sc.set(sc.get(Calendar.YEAR),sc.get(Calendar.MONTH), sc.get(Calendar.DATE),sc.get(Calendar.HOUR) , sc.get(Calendar.MINUTE)); 
      strt = sf.format(sc.getTime()); 
      System.out.println("Start :"+strt);