当地时间与美国东部时间换算
Local time to EST time Conversion
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
嘿,请试试这个 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;
}
您的问题是使用代表 "Eastern Standard Time" 的标识符 "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 点。
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
嘿,请试试这个 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;
}
您的问题是使用代表 "Eastern Standard Time" 的标识符 "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 点。