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

Android Studio java.time.format.DateTimeParseException:从日期选择器中选择日期时无法解析文本

莘绍元
2023-03-14

我的问题是,当我按Submit时,应用程序崩溃,并在调试中触发以下异常:

java.time.format.DateTimeParseException: Text '2021-11-9' could not be parsed at index 8

这是日期类、保存按钮和日历对话框片段的代码:

private LocalDate date;

public void setDate(LocalDate d) {
    date = d;
}

public LocalDate getDate() {
    return date;
}

public TextView date;
private Invoice invoice;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_invoice);
    date = findViewById(R.id.idDate);

    Button btnSave = findViewById(R.id.btnSaveInvoice);
        
    data.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            calendarDialog calendar = new calendarDialog();
            calendar.show(getFragmentManager(),"calendarDialog");
        }
    });

    btnSave.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.O)
        @Override
        public void onClick(View v) {
            invoice = new Invoice();
            LocalDate date = LocalDate.parse(data.getText());
            invoice(date);
        }
    });
}
public class calendarDialog extends DialogFragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater,     @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(layout.calendar_my_dialog,container,false);
        CalendarView      calendarView=view.findViewById(id.calendarView);
        calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(@NonNull CalendarView view, int Year, int Month, int dayOfMonth) {
              int month = Month+1;
              String txtDate = Year+"-"+Month+"-"+dayOfMonth;
                ((activity_invoice)getActivity()).date.setText(txtDate);
                getDialog().dismiss();
            }
        });
        return view;
    }
}

共有1个答案

郭德惠
2023-03-14

您将收到字符串类似于“2021-11-9”,其格式为“uuuu-mm-d”,但是当您尝试使用localdate date=localdate.parse(data.gettext());解析它们时,您将隐式地使用标准ISO格式,其模式为“uuuu-mm-dd”,因此,需要一个字符串类似于“2021-11-9”(月份中的一天为两位数)。你的数字少了一个数字,至少当一个月的一天小于10的时候是这样。

可以传递处理个位数格式的格式化程序:

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MM-d");

然后使用该格式化程序解析字符串:

LocalDate date = LocalDate.parse(data.getText(), dtf);
 类似资料:
  • 我已经记录了用于从日期选择器中选择日期的selenium代码。在运行测试用例时,日期选择器会弹出并正确突出显示所选日期。但是没有选择日期。代码如下所示:- 此异常仅出现在记录的代码中。我使用的是selenium-server-standalone-2 . 45 . 0 jar。

  • HTML与它的外观截图一起粘贴,如下所示。 HTML: 我曾经试过 甚至试图等待命令以使定位器被找到但没有成功。 WebDriverWait(驱动程序,100)。直到(预期条件.element可禁用)(By.css选择器 两者都不起作用,因为它无法识别元素。有人能帮我吗。如果可能,我们甚至可以单击“上一个”和“下一个”,以便我们也可以单击一些以前的日期吗?

  • 我无法从日历中选择数据,因为它没有可选择的id。 下面是我的HTML代码, 我试过的代码是 但无法选择日期 申请的网址: http://demo.guru99.com/V4/ 用户名: mgr123密码: mgr!23 单击左侧窗格中的新帐户,选择上面讨论的所需页面。 有人能帮忙选择日期吗?

  • 我试图在Android中创建一个日期对象,从日期选择器和时间选择器。我知道如何单独进行,但当我想使用日期选择器和时间选择器创建单个日期对象时 我试过这个 但是没有运气,因为它已被弃用。有人能给我指出一个资源吗?

  • 日期时间选择器是一个定制的picker,因此他的用法和picker完全一致。打开picker的默认值是当前时间,可以通过value参数指定 datetime-picker 定制了 onChange 和 cols 参数,请不要设置这两个参数。 <input type="text" id='datetime-picker'/> <script>   $("#datetime-picker").da

  • 本文向大家介绍Android 日期选择器,包括了Android 日期选择器的使用技巧和注意事项,需要的朋友参考一下 示例 DatePicker允许用户选择日期。创建的新实例时DatePicker,我们可以设置初始日期。如果我们不设置初始日期,那么默认情况下将设置当前日期。 我们可以DatePicker使用DatePickerDialog或通过使用DatePicker小部件创建我们自己的布局来向用户