当前位置: 首页 > 知识库问答 >
问题:

Java Android Studio-带有Android10的phisycal设备上出现不可解析的日期错误

储志业
2023-03-14

这部分代码将输入“2020年1月1日”转换为“01/01”。整个代码在Android到Pie的设备上都能完美地工作,在AVD中也能在带有Q和R的设备上工作。当我尝试用Android Q在phisycal Android设备上运行它时,它并不运行(我尝试了两种不同的设备,一个是Mi Note10另一个是OnePlus 6T)。我对调试器进行了检查,在IF循环中发现了这个错误(我认为是在指令@suppresslint(“SimpleDateFormat”)SimpleDateFormat dt=new SimpleDateFormat(“e MMM dd hh:mm:ss z yyyy”);“

w/system.err:java.text.ParseException:不可解析日期:“Thu Nov 05 00:00:00 GMT+01:00 202”

       String[] mese = new String[] {"January","February","March","April","May","June","July","August","September","October","November","December"};
       int a= 0 ;

       while (a < 12){ 
                    if(dato.contains(mese[a])){ 
                             System.out.println("Test 3");
                             DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
                             Date date = format.parse(dato);
                             @SuppressLint("SimpleDateFormat") SimpleDateFormat dt = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy");
                             Date date2 = dt.parse(String.valueOf(date));
                             @SuppressLint("SimpleDateFormat") SimpleDateFormat dt1 = new SimpleDateFormat("dd/MM");
                             assert date2 != null;
                             dato = dato.replaceAll(dato,dt1.format(date2));
                    }
                    a++;
                }

我的模式不对?我尝试了EEE MMM dd hh:mm:ss zzz yyyy和EEE MMM dd hh:mm:ss zzzz yyyy但结果相同

共有1个答案

狄德泽
2023-03-14

我用这种方式解决了不再使用SimpleDateFormat:

         while (a < 12){
                    if(dato.contains(mese[a])){

                        String dateInString = dato;
                        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.ENGLISH);
                        LocalDate dateTime = LocalDate.parse(dateInString, formatter);
                        DateTimeFormatter f2 = DateTimeFormatter.ofPattern("dd/MM");
                        String newDate = dateTime.format(f2);
                        dato = dato.replaceAll(dato,newDate);

                    }
                    a++;
                }
 类似资料:
  • 问题内容: 我面临一个非常奇怪的问题。解析此字符串时,出现以下异常- 奇怪的是,发生此异常的设备是朋友的 Nexus 5 。但是,如果我在 Nexus 5 / 其他几个模拟器 上调试了相同的字符串,则可以正常工作。 这是我正在使用的代码。属于包。属于包 这是完整的堆栈跟踪。 问题答案: 设备默认语言环境中的am / pm符号可能会影响它,因此请尝试使用以下语言环境来解析日期,这将对您有所帮助。

  • 问题内容: 我有一个名为的变量,它具有以下格式的今天的日期:。然后,将其格式化为MySQL的Date类型格式,即。这段代码可以做到: 我要做的是将其恢复为Date类型。我尝试了一些方法,但是它们没有用。主要解决方案是按照其他的问题中所述进行操作](http://codingdict.com/questions/2936),并通过一个小小的mod达到了我想要的功能: 但是它不起作用,因为尝试解析时出

  • 我尝试将字符串转换为日期。

  • 我正在尝试解析EEE,dd MMM yyyy HH:MM:SS zzz格式的日期,例如使用Threeten的DateTimeFormatter解析“Tue,16 May 2017 07:44:48 GMT”之类的字符串。但是,由于某种原因,似乎无法解析时区名称(我尝试在没有时区名称部分的情况下解析同一个字符串,结果成功了)。 下面是代码的解析部分: 我为时区名称部分尝试了各种不同的格式(例如z,z

  • 问题内容: 我正在尝试用正斜杠替换连字符,但结果是 我具有要转换的必要值,有人可以告诉我为什么它返回错误吗?另外,我想在格式的末尾附加一个,可以吗? 问题答案: 您需要先解析为正确的格式作为输入 然后您可以使用format()以其他格式打印它 并且不要期望类的方法返回格式化值,这是固定的实现

  • 问题内容: 尝试转换日期格式时,出现一个异常:日期不可解析,并且不知道如何解决此问题。 我收到一个表示事件日期的字符串,并希望在GUI中以其他格式显示该日期。 我试图做的是以下几点: 不管怎么说 是假的。我想要以下格式的日期字符串: dd.MM.yyyy HH:mm:ss 输入的String示例如下: 2010-01-04 01:32:27 UTC 有谁知道如何将上面的示例日期(字符串)转换为字符