7 Stimmen

Joda Time: UTC in Lokalzeit umrechnen

Ich möchte ein Joda Time UTC DateTime Objekt in die lokale Zeit konvertieren.

Hier ist eine umständliche Methode, die zu funktionieren scheint. Aber es muss einen besseren Weg geben.

Hier ist der Code (in Scala) ohne umgebende Deklarationen:

    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
  }

Hier ist die Ausgabe:

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

9voto

Synesso Punkte 35757

Das verwende ich bei einem aktuellen Projekt.

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

Ist das hilfreich?

EDITAR:

Hier ist etwas, das eine Zeit in der aktuellen TZ nimmt und in Brisbane-Zeit umrechnet. Sie können das gleiche Prinzip verwenden.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X