2011-11-23 66 views

Trả lời

12

Nếu bạn nhập vào "múi giờ thay đổi ngày Java" hoặc "múi giờ thay đổi ngày Javascript" của Google. Bạn sẽ có một trong những kết quả của bạn:

Trong Java (nguồn: 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 (nguồn: 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

Các lớp học ngày giờ cũ được thiết kế kém, khó hiểu và phiền hà. Tránh chúng.

Sử dụng các lớp hiện đại: khung java.time được tích hợp sẵn trong Java 8 trở lên. Tìm lại cổng for earlier Java 6 & 7for Android.

An Instant là một thời điểm trên dòng thời gian trong UTC.

Instant now = Instant.now(); 

Áp dụng múi giờ (ZoneId) để nhận được ZonedDateTime.

Không bao giờ sử dụng các chữ viết tắt của 3-4 chữ cái như EST hoặc IST. Chúng không được tiêu chuẩn hóa hoặc không phải là duy nhất (!). Sử dụng proper time zone names, được xây dựng ở định dạng continent/region chẳng hạn như Asia/Kolkata, Pacific/Auckland, America/Los_Angeles.

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

Áp dụng múi giờ khác để tạo khác ZonedDateTime được điều chỉnh theo múi giờ đó. Gọi withZoneSameInstant.

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

Nếu bạn muốn quay trở lại để UTC, yêu cầu một Instant.

Instant instant = zdt_Paris.toInstant(); 
0

Mã Để Nhận Berlin Thời gian và Convert nó sang UTC Time

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); 
Các vấn đề liên quan