How to convert a time from GMT to EST

21,780

Solution 1

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

Solution 2

Since you have tagged your question java-time, you do deserve a java.time answer.

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

This prints

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

There are a number of things to note though:

  • You also tagged your question android. java.time seems to be coming to Android, but as of writing it is not on the majority of Android phones. Don’ t despair, though, get the ThreeTenABP and use the classes on Android.
  • The SimpleDateFormat and TimeZone classes used in the other answers are long outdated, so if your Android app is doing any work with dates and/or times and/or time zones, I do recommend ThreeTenABP and the modern classes as the programmer friendly and the futureproof way to go.
  • You asked for EST time zone and then gave us a date of May 8, which is in the summer time (DST) part of the year. First, three letter abbreviations are dangerous in being ambiguous and in this case not a full time zone, so avoid them where you can. I solved the problem by using America/Coral_Harbour since I read that this particular place uses EST all year round, no summer time. If this was not what you intended, please provide a different location. If instead I use America/Montreal, I get 2014-05-08T02:36:30-04:00[America/Montreal], for example, with time zone offset -4 instead of -5.

Furhter link: How to use ThreeTenABP in Android Project

Solution 3

Following code for convert date from one timezone to another timezone with any date format

{   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;
}
Share:
21,780
Ashish Tiwari
Author by

Ashish Tiwari

I am cool casual person working as Android Application Developer.

Updated on June 16, 2020

Comments

  • Ashish Tiwari
    Ashish Tiwari almost 4 years

    I have a Date & time "20140508063630" in (yyyyMMddHHmmss) format. I want to convert this Time into EST time zone. How can I do it? If there is any API for this conversion please let me know. Thanks in advance.

  • Sameer Kazi
    Sameer Kazi about 10 years
    This is not GMT to EST this ans is for my timezone to EST .. because you are creating new date, not using existing date which i have
  • Suren Raju
    Suren Raju about 10 years
    @Sameer Kazi: I'm assuming that im in GMT. Just for example i took current date. User can use any date and format in GMT. This answer just to explain how to convert from GMT to EST.
  • Ashish Tiwari
    Ashish Tiwari about 10 years
    I parse date string (20140508063630) into date and them using your code. it not doing anything.
  • Suren Raju
    Suren Raju about 10 years
    @Ashish Tiwari: I have edited the code. Can you follow the updated code?
  • Suren Raju
    Suren Raju about 10 years
    @Ashish Tiwari Accept the answer. :)