如何将时间从GMT转换为EST

时间:2014-05-08 05:53:18

标签: java android date timezone java-time

我有一个日期&时间“20140508063630”(yyyyMMddHHmmss)格式。我想将此时间转换为EST时区。我该怎么做?如果此转换有任何API,请告诉我们。提前致谢。

3 个答案:

答案 0 :(得分:8)

    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();
        }

答案 1 :(得分:2)

由于您已经标记了java-time的问题,因此您应该得到java.time个答案。

    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);

打印

2014-05-08T01:36:30-05:00[America/Coral_Harbour]

但有很多事情需要注意:

  • 您还标记了您的问题android。 java.time似乎即将推出Android,但截至发稿时,大多数Android手机都没有。不过,不要绝望,得到ThreeTenABP并使用Android上的课程。
  • 其他答案中使用的SimpleDateFormatTimeZone类已经过时了,所以如果您的Android应用正在处理日期和/或时间和/或时区,我建议使用ThreeTenABP和现代课程作为程序员友好和未来的方式去。
  • 您询问了EST时区,然后给了我们5月8日的日期,这是一年中夏季时间(DST)的一部分。首先,三个字母的缩写在含糊不清时很危险,在这种情况下不是全时区,所以尽可能避免使用它们。我通过使用America / Coral_Harbour解决了这个问题,因为我读到这个特定的地方全年都使用EST,没有夏令时。如果这不是您的意图,请提供其他位置。如果我使用美国/蒙特利尔,我得到2014-05-08T02:36:30-04:00[America/Montreal],例如,时区偏移-4而不是-5。

更多链接: How to use ThreeTenABP in Android Project

答案 2 :(得分:1)

以下代码将转换日期从一个时区转换为另一个具有任何日期格式的时区

{   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;
}