如何从当地时间转换为utc?

问题描述:

我发现很多功能从utc转换到当地时间,但我没有找到如何从本地转换为utc?如何从当地时间转换为utc?

这是从UTC用于当地,如何编辑从本地获得UTC?

 public static String timezoneAwareDate(String date){ 
    // create simpledateformat for UTC dates in database 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
    simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 

    Date output; 
    // parse time 
    try{ 
     output = simpleDateFormat.parse(date); 
    }catch (Exception e){ 
     // return current time 
     output = new Date(); 
    } 

    return output.toString(); 
} 
+0

看起来像这实际上让你UTC时间。注意'.setTimeZone(TimeZone.getTimeZone( “UTC”)' –

+4

http://stackoverflow.com/questions/17677546/utc-time-into-local-time-in-android –

+0

没有,本地时间16:20是这里是UTC + 2,所以UTC时间应该是14:20,但我发现它18:20 @TimCastelijns –

将此类添加到您的项目中,并使用它们的方法将本地utc或utc应用到本地。

import java.util.TimeZone; 

public final class Utility { 
public static final TimeZone utcTZ = TimeZone.getTimeZone("UTC"); 

public static long toLocalTime(long time, TimeZone to) { 
    return convertTime(time, utcTZ, to); 
} 

public static long toUTC(long time, TimeZone from) { 
    return convertTime(time, from, utcTZ); 
} 

public static long convertTime(long time, TimeZone from, TimeZone to) { 
    return time + getTimeZoneOffset(time, from, to); 
} 

private static long getTimeZoneOffset(long time, TimeZone from, TimeZone to) { 
    int fromOffset = from.getOffset(time); 
    int toOffset = to.getOffset(time); 
    int diff = 0; 

    if (fromOffset >= 0){ 
     if (toOffset > 0){ 
      toOffset = -1*toOffset; 
     } else { 
      toOffset = Math.abs(toOffset); 
     } 
     diff = (fromOffset+toOffset)*-1; 
    } else { 
     if (toOffset <= 0){ 
      toOffset = -1*Math.abs(toOffset); 
     } 
     diff = (Math.abs(fromOffset)+toOffset); 
    } 
    return diff; 
    } 
} 

如果你想更多关于这件事。它已经在这个link

+1

虽然此代码段可以解决的问题,[包括一个解释](http://meta.stackexchange.com/questions/114762/explain-completely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – Ferrybig

+0

功能之外,'Utility'是一类一个非常模糊的名称 –

+0

@TimCastelijns你是正确的,但这个类可以扩展更多的解决件事的方法。你有什么建议,如姓名此类:) – slymnozdmrc

public static java.util.Date getConvertedDate(java.util.Date date,String newTimeZone) { 

    if(date != null) { 
     SimpleDateFormat df = new SimpleDateFormat("dd/MM/yy hh:mm a"); 
     df.setTimeZone(TimeZone.getTimeZone(newTimeZone)); 

     Calendar calendar = Calendar.getInstance(); 
     calendar.setTime(date); 

     String newdt = df.format(calendar.getTime()); 
     try { 
      date = df.parse(newdt); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 
    return date; 
} 
+2

WELCOM e堆栈溢出!尽管这段代码可以解决这个问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – Ferrybig