【发布时间】:2019-08-07 16:30:10
【问题描述】:
我在yyyy-mm-ddThh:mm:ss.nnnnnn+|-hh:mm 中有一个日期时间,我想将它转换成这种格式MMMM-yyyy
我已经使用 java.time API 成功地做到了这一点,但无法使用 SimpleDateTimeFormatter 做到这一点。因为 java.time 只支持 android O 以后,所以我仍然需要支持旧设备。我当前失败并给出异常的代码是
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
ZonedDateTime datetime = ZonedDateTime.parse(argDate);
DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern("MMMM-yyyy");
String formatDateTime = datetime.format(targetFormatter);
return formatDateTime;
} else{
try {
DateFormat originalFormat = new SimpleDateFormat("yyyy-mm-ddThh:mm:ss.nnnnnn+|-hh:mm", Locale.ENGLISH);
DateFormat targetFormat = new SimpleDateFormat("MMMM-yyyy");
Date date = originalFormat.parse(argDate);
String formattedDate = targetFormat.format(date); // 20120821
return formattedDate;
}catch(Exception ex){
ex.printStackTrace();
}
}
例外是
W/System.err: java.lang.IllegalArgumentException: 非法模式 字符'T' 2019-08-07 21:53:24.445 14123-14123/com.chat W / System.err:在 java.text.SimpleDateFormat.compile(SimpleDateFormat.java:873) 2019-08-07 21:53:24.445 14123-14123/com.chat W/System.err:
在 java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:687) 2019-08-07 21:53:24.445 14123-14123/com.chat W/System.err:
在 java.text.SimpleDateFormat.(SimpleDateFormat.java:658) 2019-08-07 21:53:24.445 14123-14123/com.chat W/System.err:
在 .ui.ContactDetailsActivity.formatDate(ContactDetailsActivity.java:652) 2019-08-07 21:53:24.445 14123-14123/com.chat W/System.err:
在 .ui.ContactDetailsActivity.fillUserCompanyDetails(ContactDetailsActivity.java:620) 2019-08-07 21:53:24.445 14123-14123/com.chat W/System.err:
在 .ui.ContactDetailsActivity.showUIFromData(ContactDetailsActivity.java:562) 2019-08-07 21:53:24.445 14123-14123/com..chat W/System.err:
在 .ui.ContactDetailsActivity.access$300(ContactDetailsActivity.java:77) 2019-08-07 21:53:24.445 14123-14123/com.chat W/System.err:
在 .ui.ContactDetailsActivity$6.onResponse(ContactDetailsActivity.java:544) 2019-08-07 21:53:24.446 14123-14123/com.chat W/System.err:
在 retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68) 2019-08-07 21:53:24.446 14123-14123/com.chat W/System.err:
在 android.os.Handler.handleCallback(Handler.java:873) 2019-08-07 21:53:24.446 14123-14123/com.chat W/System.err: at android.os.Handler.dispatchMessage(Handler.java:99) 2019-08-07 21:53:24.446 14123-14123/com.chat W/System.err: at android.os.Looper.loop(Looper.java:193) 2019-08-07 21:53:24.446 14123-14123/com.chat W/System.err:在 android.app.ActivityThread.main(ActivityThread.java:6718) 2019-08-07 21:53:24.446 14123-14123/com.chat W/System.err: at java.lang.reflect.Method.invoke(Native Method) 2019-08-07 21:53:24.446 14123-14123/com.chat W/System.err:在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 2019-08-07 21:53:24.446 14123-14123/com.chat W/System.err:
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
有人可以帮我解决这个问题吗?我想我当时的格式不正确2019-08-06T11:52:49:416472+5:30 我采用了 E8601DZw.d 格式,它被描述为yyyy-mm-ddThh:mm:ss.nnnnnn+|-hh:mm here
【问题讨论】:
-
看看this问答。
-
@AndriiOmelchenko 虽然这个问题只是这个问题的一部分,但它不足以完全解决它。这个问题只是那个问题的一部分。
标签: java android date datetime