2011-11-23 118 views

回答

12

如果您在谷歌「Java日期更改時區」或「JavaScript日期更改時區」中鍵入。你將有你的結果之一:

在Java(來源: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(來源: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

舊的日期 - 時間課程設計不佳,令人困惑和麻煩。避免它們。

使用現代類:嵌入到Java 8及更高版本中的java.time框架。找到後臺端口for earlier Java 6 & 7for Android

InstantUTC中時間軸上的某一刻。

Instant now = Instant.now(); 

應用的時區(ZoneId)獲得ZonedDateTime

切勿使用3-4字母區域縮寫,如ESTIST。它們既不標準也不唯一(!)。使用proper time zone names,內置continent/region格式,如Asia/Kolkata,Pacific/Auckland,America/Los_Angeles

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

應用不同的時區生成調整爲該時區的另一個ZonedDateTime。致電withZoneSameInstant

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

如果你想回去UTC,索要Instant

Instant instant = zdt_Paris.toInstant(); 
0

代碼來獲得柏林時間並將其轉換成UTC時間

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); 
相關問題