设置SimpleDateFormat时的NumberFormatException

时间:2017-10-17 15:18:11

标签: android datepicker

DateRangePicker的日期显示为:“yyyy-M-d”。 但我希望它将日期显示为:“yyyy-MM-dd”。

我已经尝试了以下代码:

@Override
    public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth, int yearEnd, int monthOfYearEnd, int dayOfMonthEnd) {

        String selection1 = year + "-" + (monthOfYear+1) + "-" + dayOfMonth;
        String selection2 = yearEnd + "-" + (monthOfYearEnd+1) + "-" + dayOfMonthEnd;

        Long firstDateSelection = Long.parseLong(selection1);
        Long secondDateSelection = Long.parseLong(selection2);

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

        Date startDate = new Date(firstDateSelection);
        Date endDate = new Date(secondDateSelection);

        formatter.format(startDate); formatter.format(endDate);

但是当我在“Long firstDateSelection = Long.parseLong(selection1)”中运行它时,我得到NumberFromatException?

非常感谢帮助:) 谢谢!

2 个答案:

答案 0 :(得分:1)

您收到NumberFormatException因为“1234-12-23”不是有效的Long号码,而您正在尝试将其转换为Long

Long firstDateSelection = Long.parseLong(selection1);

由于您已经拥有了日,月和年的数字,因此您只需格式化它(不需要SimpleDateFormat):

String dateString = String.format("%1$04d-%2$02d-%3$02d", year, monthOfYear, dayOfMonth);

答案 1 :(得分:0)

如果你检查关于parseLong(字符串)的Javadoc

<强>抛出 NumberFormatException的 如果字符串不包含可解析的long。

正如你可以看到一个字符串&#34; - &#34;不是一个很长的数字,它会引发异常。

如果你想正确地做,你必须创建一个日历,添加你通过参数(year,monthOfYear ...)传递的值与set(...)然后使getTime()获取日期对象

不要直接创建Date对象(new Date ...),因为它的方法setHour等已被弃用。

一旦你有了,你就可以做.format(dateObject)。