无法解析 IST 和 GMT 格式的字符串日期
Not able to parse String date of format IST and GMT format
无法使用 SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy")
解析字符串日期 Sun Dec 06 11:15:00 IST 2015
当我在 SimpleDateFormat
中使用 Locale.ENGLISH
没有 Locale.ENGLISH
工作但
当应用程序语言更改为非英语语言时无法解析,例如 Marathi/Hindi
。
我可以将其他字符串日期如 10 12 2018
解析为 dd MM yyyy
但不能高于格式。
在 Lollipop and kit-kat
设备上遇到问题。 当我将 Locale
更改为非英语语言时。
minSdkVersion 16 和 targetSdkVersion 27
1.Tried 以下解决方案。
EEE MMM dd HH:mm:ss Z yyyy ,EEE MMM dd HH:mm:ss z yyyy ,DateFormat etc
String tDueDate="Sun Dec 06 11:15:00 IST 2015";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
Date dt = sdf.parse(tDueDate);
sdf = new SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH);
return sdf.format(dt);
Sat Oct 03 00:00:00 IST 2018
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: java.text.ParseException: Unparseable date: "Sat Oct 03 00:00:00 IST 2018" (at offset 20)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at java.text.DateFormat.parse(DateFormat.java:555)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at com.smartsms.util.EventsUtil.returnDateInDateFormat(EventsUtil.java:750)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at com.smartsms.fragment.EventsFragmentNew$MyTask.onPostExecute(EventsFragmentNew.java:1397)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at com.smartsms.fragment.EventsFragmentNew$MyTask.onPostExecute(EventsFragmentNew.java:1295)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at android.os.AsyncTask.finish(AsyncTask.java:632)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at android.os.AsyncTask.access0(AsyncTask.java:177)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at android.os.Looper.loop(Looper.java:136)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5111)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at java.lang.reflect.Method.invokeNative(Native Method)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at java.lang.reflect.Method.invoke(Method.java:515)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:806)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at dalvik.system.NativeStart.main(Native Method)
12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events
活动区域设置:en_US
试试像
这样的更改代码
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.getDefault());
Date dt = sdf.parse(tDueDate);
sdf = new SimpleDateFormat("dd MMM yyyy", Locale.getDefault());
return sdf.format(dt);
你可以这样试试:
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
更改为:
SimpleDateFormat sdf1 = new SimpleDateFormat ("EEE MMM dd HH:mm:ss 'IST' yyyy", Locale.ENGLISH);
String dateStr = "Sun Dec 06 11:15:00 IST 2015";
DateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy");
Date date = (Date)formatter.parse(dateStr);
System.out.println(date);
我正在寻找答案,为什么它无法解析字符串 Sun Dec 06 11:15:00 IST 2015 using SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy")
其他日期格式,例如字符串日期 01 10 2018
这种 dd MM YYYY
格式能够解析但不能高于此格式。所以
我已经尝试过这种替代方法来获取相应的日期格式。
希望这对某些人有所帮助
value is date object
Date date = d.parse(value);
Calendar c = Calendar.getInstance();
c.setTime(date);
int dd = c.get(Calendar.DAY_OF_MONTH);
int mmm = c.get(Calendar.MONTH) + 1;
int yyyy = c.get(Calendar.YEAR);
String dateString = "" + dd + "-" + mmm + "-" + yyyy;
无法使用 SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy")
解析字符串日期 Sun Dec 06 11:15:00 IST 2015
当我在 SimpleDateFormat
中使用 Locale.ENGLISH
没有 Locale.ENGLISH
工作但
当应用程序语言更改为非英语语言时无法解析,例如 Marathi/Hindi
。
我可以将其他字符串日期如 10 12 2018
解析为 dd MM yyyy
但不能高于格式。
在 Lollipop and kit-kat
设备上遇到问题。 当我将 Locale
更改为非英语语言时。
minSdkVersion 16 和 targetSdkVersion 27
1.Tried 以下解决方案。
EEE MMM dd HH:mm:ss Z yyyy ,EEE MMM dd HH:mm:ss z yyyy ,DateFormat etc
String tDueDate="Sun Dec 06 11:15:00 IST 2015";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
Date dt = sdf.parse(tDueDate);
sdf = new SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH);
return sdf.format(dt);
Sat Oct 03 00:00:00 IST 2018 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: java.text.ParseException: Unparseable date: "Sat Oct 03 00:00:00 IST 2018" (at offset 20) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at java.text.DateFormat.parse(DateFormat.java:555) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at com.smartsms.util.EventsUtil.returnDateInDateFormat(EventsUtil.java:750) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at com.smartsms.fragment.EventsFragmentNew$MyTask.onPostExecute(EventsFragmentNew.java:1397) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at com.smartsms.fragment.EventsFragmentNew$MyTask.onPostExecute(EventsFragmentNew.java:1295) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at android.os.AsyncTask.finish(AsyncTask.java:632) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at android.os.AsyncTask.access0(AsyncTask.java:177) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at android.os.Looper.loop(Looper.java:136) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5111) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at java.lang.reflect.Method.invokeNative(Native Method) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at java.lang.reflect.Method.invoke(Method.java:515) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:806) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events W/System.err: at dalvik.system.NativeStart.main(Native Method) 12-12 13:16:33.733 17653-17653/com.smartsms.organizer.events
活动区域设置:en_US
试试像
这样的更改代码 SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.getDefault());
Date dt = sdf.parse(tDueDate);
sdf = new SimpleDateFormat("dd MMM yyyy", Locale.getDefault());
return sdf.format(dt);
你可以这样试试:
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
更改为:
SimpleDateFormat sdf1 = new SimpleDateFormat ("EEE MMM dd HH:mm:ss 'IST' yyyy", Locale.ENGLISH);
String dateStr = "Sun Dec 06 11:15:00 IST 2015";
DateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy");
Date date = (Date)formatter.parse(dateStr);
System.out.println(date);
我正在寻找答案,为什么它无法解析字符串 Sun Dec 06 11:15:00 IST 2015 using SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy")
其他日期格式,例如字符串日期 01 10 2018
这种 dd MM YYYY
格式能够解析但不能高于此格式。所以
我已经尝试过这种替代方法来获取相应的日期格式。
希望这对某些人有所帮助
value is date object
Date date = d.parse(value);
Calendar c = Calendar.getInstance();
c.setTime(date);
int dd = c.get(Calendar.DAY_OF_MONTH);
int mmm = c.get(Calendar.MONTH) + 1;
int yyyy = c.get(Calendar.YEAR);
String dateString = "" + dd + "-" + mmm + "-" + yyyy;