解析日期为long时的数字格式异常

时间:2015-02-01 05:33:14

标签: java parsing blackberry

我在执行以下语句时遇到NumberFormatException。

Calendar cal = Calendar.getInstance();

int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day_of_month = 15;

long m_time = Long.parseLong((month + 1) + "/" + day_of_month + "/" + year);

long m_time = Long.parseLong(String.valueOf((month + 1) + "/" + day_of_month + "/" + year));

3 个答案:

答案 0 :(得分:2)

NumberFormatException的原因是你试图解析一个不是有效长表示的字符串:" 2/15/2015"

要解析您正确使用此代码的日期字符串:

SimpleDateFormat format = new SimpleDateFormat("M/dd/yyyy");
Date date = format.parse(month + 1 + "/" + day_of_month + "/" + year);

答案 1 :(得分:1)

&#34 2 /二千零十五​​分之十五" Long.parseLong()方法无法解析字符串的类型。使用SimpleDateFormat。

String string_date = "15-January-2015";

SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
Date d = f.parse(string_date);
long milliseconds = d.getTime();

答案 2 :(得分:0)

您正在尝试使用包含大量非数字字符的连接字符串进行parseLong。

如果您尝试获取给定日期的Long值:

Calendar myCalendar = Calendar.getInstance();
Date now = myCalendar.getTime();   // date object of today
System.out.println(now.getTime()); // prints long value of today

myCalendar.set(Calendar.DAY_OF_MONTH, 15);
Date then = myCalendar.getTime();  // date object for the 15th
System.out.println(then.getTime());// prints long value again but for the 15th

如果您要将Date对象格式化为String

SimpleDateFormat format = new SimpleDateFormat("M/d/YYYY");
System.out.println(format.format(now));
System.out.println(format.format(then));