1

I have a date format yyyy/mm/dd hh:mm:ss in GMT format. I want to convert the date from GMT format to BST time. What's the simplest way to do this?

eebbesen
  • 5,070
  • 8
  • 48
  • 70
Rory Lester
  • 2,858
  • 11
  • 49
  • 66
  • possible duplicate of [Convert Date/Time for given Timezone - java](http://stackoverflow.com/questions/7670355/convert-date-time-for-given-timezone-java) – ug_ Mar 09 '15 at 10:30
  • 2
    Just one comment. There is no GMT format. The format of the date and the timezone are two different shoes. I guess you want to know what local BST time your GMT time is, right? – ReneS Mar 09 '15 at 10:34

1 Answers1

3

With Java 8, the easiest way is probably to:

  • parse the date into a LocalDateTime
  • use it to create a ZonedDateTime using GMT time zone
  • change the time zone to BST
  • get the LocalDateTime of that new date

Sample example:

String date = "2015/03/09 10:32:00";
LocalDateTime gmt = LocalDateTime.parse(date, DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
ZonedDateTime instant = ZonedDateTime.of(gmt, ZoneId.of("GMT"));
LocalDateTime bst = instant.withZoneSameInstant(ZoneId.of("Europe/London")).toLocalDateTime();
System.out.println(bst);

If you change the month to July, for example, you should see an offset of one hour as expected.

(I assumed that BST is British Summer Time - it could also be Bangladesh Standard Time: in general it is better to use the full name of the time zone to avoid ambiguities).

assylias
  • 321,522
  • 82
  • 660
  • 783