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?
非常感谢帮助:) 谢谢!
答案 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)。