如何从当地时间转换为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();
}
将此类添加到您的项目中,并使用它们的方法将本地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
虽然此代码段可以解决的问题,[包括一个解释](http://meta.stackexchange.com/questions/114762/explain-completely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – Ferrybig
功能之外,'Utility'是一类一个非常模糊的名称 –
@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;
}
WELCOM e堆栈溢出!尽管这段代码可以解决这个问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – Ferrybig
看起来像这实际上让你UTC时间。注意'.setTimeZone(TimeZone.getTimeZone( “UTC”)' –
http://stackoverflow.com/questions/17677546/utc-time-into-local-time-in-android –
没有,本地时间16:20是这里是UTC + 2,所以UTC时间应该是14:20,但我发现它18:20 @TimCastelijns –