2010-10-28 16 views
6

में कनवर्ट करें मैं स्थानीय समय पर एक जोडा टाइम यूटीसी डेटटाइम ऑब्जेक्ट को कन्वर्ट करना चाहता हूं।जोडा समय: यूटीसी को स्थानीय

यहां काम करने के लिए एक श्रमिक तरीका है जो काम करता है। लेकिन एक बेहतर तरीका होना चाहिए।

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 
    } 

यहाँ उत्पादन है:

dtUTC = 2010-10-28T04: 00: 00.000 + 11: 00 स्थानीय = 2010-

यहाँ कोड (स्काला में) आसपास के घोषणाओं के बिना है 10-28T15: 00: 00.000 + 11: 00

उत्तर

8

यहां मैं वर्तमान प्रोजेक्ट पर उपयोग करता हूं।

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

क्या इससे मदद मिलती है?

संपादित करें:

यहाँ कुछ है कि वर्तमान TZ में समय लगता है और ब्रिस्बेन समय में धर्मान्तरित है। आप एक ही सिद्धांत का उपयोग कर सकते हैं।

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 
+0

बिल्कुल सही। मैंने इसे मेलबर्न के लिए थोड़ा और दक्षिण अनुकूलित किया। – Koala3

संबंधित मुद्दे