How to convert a time from GMT to EST
我有一个日期& 时间"20140508063630"(yyyyMMddHHmmss)格式。 我想将此时间转换为EST时区。 我该怎么做? 如果此转换有任何API,请告诉我们。 提前致谢。
1 2 3 4 5 6 7 8 9 10 | try { DateFormat gmtFormat = new SimpleDateFormat(); TimeZone estTime = TimeZone.getTimeZone("EST"); gmtFormat.setTimeZone(estTime); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); sdf.setTimeZone(TimeZone.getTimeZone("GMT")); System.out.println("EST Time:" + gmtFormat.format(sdf.parse("20140508063630"))); } catch (ParseException e) { e.printStackTrace(); } |
由于您已经标记了java-time的问题,因此您应该得到
1 2 3 4 5 6 | String dateAndTime ="20140508063630"; DateTimeFormatter parseFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); ZonedDateTime coralHarbourDateTime = LocalDateTime.parse(dateAndTime, parseFormatter) .atOffset(ZoneOffset.UTC) .atZoneSameInstant(ZoneId.of("America/Coral_Harbour")); System.out.println(coralHarbourDateTime); |
这打印
1 | 2014-05-08T01:36:30-05:00[America/Coral_Harbour] |
有很多事情需要注意:
-
你还标记了你的问题android。
java.time 似乎即将推出Android,但截至发稿时,大多数Android手机都没有。但是,不要绝望,获得ThreeTenABP并使用Android上的课程。 -
其他答案中使用的
SimpleDateFormat 和TimeZone 类已经过时了,所以如果您的Android应用程序正在处理日期和/或时间和/或时区,我建议使用ThreeTenABP和现代类作为程序员友好和未来的方式去。 -
您询问了EST时区,然后给了我们5月8日的日期,这是一年中的夏令时(DST)。首先,三个字母的缩写在含糊不清时很危险,在这种情况下不是全时区,所以尽可能避免使用它们。我通过使用America / Coral_Harbour解决了这个问题,因为我读到这个特定的地方全年都使用EST,没有夏令时。如果这不是您的意图,请提供其他位置。如果我使用America / Montreal,我得到
2014-05-08T02:36:30-04:00[America/Montreal] ,例如,时区偏移-4而不是-5。
更多链接:如何在Android项目中使用ThreeTenABP
以下代码将转换日期从一个时区转换为另一个具有任何日期格式的时区
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | { String parsedDate = null; try { SimpleDateFormat dbDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); dbDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); Date date = dbUtcDateFormat.parse("20140508063630"); SimpleDateFormat userDateFormat = new SimpleDateFormat(yyyyMMddHHmmss); userDateFormat.setTimeZone(TimeZone.getTimeZone("EST")); parsedDate = userDateFormat.format(date); } catch (Throwable t) { logger.warn("Date Parse Faied :", t); } return parsedDate; } |