Tavian Barnes
Tavian Barnes

Reputation: 12922

How to set the default time zone for Joda's DateTime.parse()

I want to use Joda Time to parse times that have no explicit time zone with a particular default zone (UTC for example), but use the explicit zone if present. For example:

parse("2014-02-11T12:00:00")       // Should be UTC
parse("2014-02-11T12:00:00+02:00") // Should be +2 hours

Everything I've tried has some problem:

DateTime.parse("2014-02-11T12:00:00") // Gives the server time zone, -5 hours

ISODateTimeFormat.dateTimeParser()
        .withZone(DateTimeZone.UTC)
        .parseDateTime("2014-02-11T12:00:00+02:00"); // Gives UTC

Basically I want the behaviour of withZone() and withOffsetParsed() at the same time, but they override each other.

I don't want to change the default time zone of the whole JVM.

Upvotes: 3

Views: 1141

Answers (1)

Tavian Barnes
Tavian Barnes

Reputation: 12922

Figured out the answer while I was typing the question. Since a quick Google didn't find the answer, I figured I'd post it. The solution is:

ISODateTimeFormat.dateTimeParser()
        .withChronology(ISOChronology.getInstance(timeZone))
        .withOffsetParsed()
        .parseDateTime(...);

Upvotes: 5

Related Questions