كيف يمكنني التعرف على المنطقة الزمنية الزولو في جاوة DateUtils.parseDate؟

StackOverflow https://stackoverflow.com/questions/424522

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا لدي تواريخ في شكل 2008-12-23T00:00:00Z. هذا تبدو كثيرا مثل شكل ISO 8601 مع (UTC) التوقيت الزولو. أنا على الرغم من أن التعليمات البرمجية التالية تحليل ذلك (باستخدام <لأ href = "http://commons.apache.org/lang/api-release/org/apache/commons/lang/time/DateFormatUtils.html#ISO_DATETIME_TIME_ZONE_FORMAT" يختلط = " noreferrer "> العموم لانغ ):

String pattern = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern();
Date d = DateUtils.parseDate(dateToParse, new String[] { pattern });

إذا كنت تأخذ نفس النمط (yyyy-MM-dd'T'HH:mm:ssZZ) ولكن إزالة التوقيت، وأنها تعمل.

هل تعرف كيف يمكن التعرف على التوقيت الزولو؟ لدي فقط الوصول إلى جاوة 1.4 وجاكرتا العموم لانغ. لا Joda وقت بالنسبة لي حتى الآن ...

هل كانت مفيدة؟

المحلول

ويبدو وكأنه خطأ في FastDateFormat العموم لانغ ل. نقول لهم عن ذلك، ويجب عليك الحصول على الإصلاح في نهاية المطاف. حتى ذلك الحين كنت قد تحاول المعالجة المسبقة لمواعيد واستبدال 'Z' مع '+00'

نصائح أخرى

وأعتقد العموم لانغ وباستخدام المدمج في جاوة DateFormat أو SimpleDateFormat الذي يلقي ParseException لتاريخك. وإذا كان كل سلاسل الإدخال تنتهي مع Z زائدة، يمكنك استخدام هذا:


java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
// explicitly set timezone of input if needed
df.setTimeZone(java.util.TimeZone.getTimeZone("Zulu"));
java.util.Date date = df.parse("2008-12-23T00:00:00Z");

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top