Joda time: convert UTC to local

I want to convert a UTC Time Date Time object to local time.

Here's a painstaking way to do this, which seems to work. But there must be a better way.

Here's the code (in Scala) with no surrounding declarations:

val dtUTC = new DateTime("2010-10-28T04:00") println("dtUTC = " + dtUTC) val dtLocal = timestampLocal(dtUTC) println("local = " + dtLocal) def timestampLocal(dtUTC: DateTime): String = { // This is a laborious way to convert from UTC to local. There must be a better way. val instantUTC = dtUTC.getMillis val localDateTimeZone = DateTimeZone.getDefault val instantLocal = localDateTimeZone.convertUTCToLocal(instantUTC) val dtLocal = new DateTime(instantLocal) dtLocal.toString } 

Here's the conclusion:

dtUTC = 2010-10-28T04: 00: 00.000 + 11: 00 local = 2010-10-28T15: 00: 00.000 + 11: 00

+6
scala time utc jodatime local
source share
1 answer

Here is what I use in the current project.

 val marketCentreTime = timeInAnotherTimezone.withZone(DateTimeZone.forID("Australia/Melbourne")) 

Does it help?

EDIT:

Here's something that takes time in the current TZ and converts to Brisbane. You can use the same principle.

 Welcome to Scala version 2.8.0.final (Java HotSpot(TM) Client VM, Java 1.6.0_21). Type in expressions to have them evaluated. Type :help for more information. scala> import org.joda.time._ import org.joda.time._ scala> def timestampBrisbane(date: DateTime): String = { | date.withZone(DateTimeZone.forID("Australia/Brisbane")).toString | } timestampBrisbane: (date: org.joda.time.DateTime)String scala> val date = new DateTime date: org.joda.time.DateTime = 2010-10-28T16:22:03.481+11:00 scala> val dateBrisbane = timestampBrisbane(date) dateBrisbane: String = 2010-10-28T15:22:03.481+10:00 
+8
source share

All Articles