无法解析IST和GMT格式的字符串日期

时间:2018-12-12 05:27:05

标签: android locale simpledateformat

我在Sun Dec 06 11:15:00 IST 2015中使用SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy")时使用Locale.ENGLISH时,无法使用SimpleDateFormat来解析字符串日期Locale.ENGLISH,但是

当应用程序语言更改为非英语(例如Marathi/Hindi)时,无法解析。

我可以将其他字符串日期(如10 12 2018减为dd MM yyyy,但不能使用以上格式。

Lollipop and kit-kat设备上的问题。当我将Locale更改为非英语时。

minSdkVersion 16和targetSdkVersion 27

1。尝试以下解决方案。

  

EEE MMM dd HH:mm:ss Z yyyy,EEE MMM dd HH:mm:ss z yyyy,DateFormat等

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);
  

IST 2018年10月3日星期六00:00:00   12-12 13:16:33.733 17653-17653 / com.smartsms.organizer.events W / System.err:java.text.ParseException:无法解析的日期:“ IST 2018年10月03日00:00:00(偏移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.access $ 600(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:位于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:位于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(本机方法)   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(本机方法)   12-12 13:16:33.733 17653-17653 / com.smartsms.organizer.events

活动区域设置: en_US

4 个答案:

答案 0 :(得分:0)

尝试使用类似

的更改代码
 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);

答案 1 :(得分:0)

您可以尝试这样:

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);

答案 2 :(得分:0)

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);

答案 3 :(得分:0)

我一直在寻找答案,为什么它无法将字符串gnuplot的其他日期格式(例如字符串日期Sun Dec 06 11:15:00 IST 2015 using SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy"))与01 10 2018的格式进行解析,但不能高于该值。所以

我尝试了这种替代方法来获取各自的日期格式。

希望这对某些人有帮助

  

是日期对象

dd MM YYYY