Android当地时间到EST时间转换
代码:
SimpleDateFormat serverDateFormat=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
serverDateFormat.setTimeZone(TimeZone.getTimeZone("EST"));
Calendar calender= Calendar.getInstance(Locale.getDefault());
String time=serverDateFormat.format(calender.getTime());
但是我错误的时间。 与正确时间相差一小时。 例如: 当地时间:Tue Jul 07 17:30:00 GMT + 05:30 2015 格式化时间:2015/07/07 07:00:00 正确的时间:2015/07/07 08:00:00
答案 0 :(得分:2)
您的问题是使用标识符“EST”代表“东部标准时间”。顾名思义它不使用夏令时规则。证明:
TimeZone tz = TimeZone.getTimeZone("EST");
long offset = tz.getOffset(System.currentTimeMillis()) / (1000 * 3600);
System.out.println(tz.getID() + ":" + tz.useDaylightTime() + "/" + offset);
// output: EST:false/-5
使用时区ID“America / New_York”代替:
tz = TimeZone.getTimeZone("America/New_York");
offset = tz.getOffset(System.currentTimeMillis()) / (1000 * 3600);
System.out.println(tz.getID() + ":" + tz.useDaylightTime() + "/" + offset);
// output: America/New_York:true/-4
然后您将观察7月份的夏令时间,偏差为(+05:30) - ( - 04:00)= +09:30,导致预计当地时间早上8点。
答案 1 :(得分:0)
嘿,请试试function
时间conversion
-
public static String getTime(String time, SimpleDateFormat sdf) {
String convertedTime = "";
try {
TimeZone timeZone = TimeZone.getDefault();
Date postdate = sdf.parse(time);
long postTimeStamp = postdate.getTime() + timeZone.getRawOffset();
String dateString = sdf.format(new Date(postTimeStamp));
convertedTime = dateString;
// convertedTime = getLastTime(context, time);
} catch (Exception e) {
e.printStackTrace();
}
return convertedTime;
}