2009-08-25 20 views
52

के साथ टाइमज़ोन समेत एक तिथि का विश्लेषण कैसे कर सकता हूं कोड का यह स्निपेट हमेशा दिनांक को वर्तमान टाइमज़ोन में पार्स करता है, और स्ट्रिंग में टाइमज़ोन में पार्स नहीं किया जाता है।मैं जोडा समय

final DateTimeFormatter df = DateTimeFormat 
     .forPattern("EEE MMM dd HH:mm:ss 'GMT'Z yyyy"); 
final DateTime dateTime = df 
     .parseDateTime("Mon Aug 24 12:36:46 GMT+1000 2009"); 
System.out.println("dateTime = " + dateTime); 
// outputs dateTime = 2009-08-24T04:36:46.000+02:00 

यह आउटपुट:

dateTime = 2009-08-24T04:36:46.000+02:00 

जबकि मैं उम्मीद:

dateTime = 2009-08-24T04:36:46.000+10:00 

कोई भी विचार क्या मैं गलत कर रहा हूँ? , withOffsetParsed() उपयोग करती हैं इसलिए के रूप में:

उत्तर

73

ठीक है, आगे Googling मुझे मेरे हाल सवाल का जवाब दे दिया

final DateTimeFormatter df = DateTimeFormat 
     .forPattern("EEE MMM dd HH:mm:ss 'GMT'Z yyyy"); 
final DateTime dateTime = df.withOffsetParsed() 
     .parseDateTime("Mon Aug 24 12:36:46 GMT+1000 2009"); 

यह काम करता है।

+5

आप अपने जवाब को स्वीकार करना चाहिए। –

+2

धन्यवाद: डी आप एक genious हैं! – mgonto

+6

आईएमओ, 'डेटटाइमफॉर्मेटर' का डिफ़ॉल्ट व्यवहार विशेष रूप से एक अश्वशक्ति के संदर्भ में "कम से कम आश्चर्य के सिद्धांत" का उल्लंघन करता है। स्टीफ को 'ऑफसेट पैरास्ड() 'के साथ खोजने के लिए धन्यवाद। –

32

भी आपके द्वारा चुने गए कर सकते हैं:

// parse using the Paris zone 
DateTime date = formatter.withZone(DateTimeZone.forID("Europe/Paris")).parseDateTime(str); 
संबंधित मुद्दे