将Date与当前Date进行比较会导致NumberFormatException

时间:2013-08-27 15:42:30

标签: java android string integer simpledateformat

我正在尝试将日期/时间(我在SharedPreferences中保存)与当前日期/时间进行比较。

有了这个,我正在检查最后一次服务是否运行,以及是否有必要再次运行。

我正在将当前日期转换为整数。但后来我收到一个错误: 错误:

  

08-27 17:21:40.930:W / System.err(26577):java.lang.NumberFormatException:无效的int:“201308271721”

完整错误:

  

08-27 17:21:40.930:W / System.err(26577):java.lang.NumberFormatException:无效的int:“201308271721”   08-27 17:21:40.960:W / System.err(26577):at java.lang.Integer.invalidInt(Integer.java:138)   08-27 17:21:40.960:W / System.err(26577):at java.lang.Integer.parse(Integer.java:378)   08-27 17:21:40.960:W / System.err(26577):at java.lang.Integer.parseInt(Integer.java:366)   08-27 17:21:40.960:W / System.err(26577):at java.lang.Integer.parseInt(Integer.java:332)   08-27 17:21:40.960:W / System.err(26577):at   xxx.xxx.RoosterSync.onHandleIntent(RoosterSync.java:118)   08-27 17:21:40.960:W / System.err(26577):在android.app.IntentService $ ServiceHandler.handleMessage(IntentService.java:65)   08-27 17:21:40.960:W / System.err(26577):在android.os.Handler.dispatchMessage(Handler.java:99)   08-27 17:21:40.960:W / System.err(26577):在android.os.Looper.loop(Looper.java:137)   08-27 17:21:40.960:W / System.err(26577):在android.os.HandlerThread.run(HandlerThread.java:60)

我正在使用的(和平)代码:

Date now = new Date();
String nowAsString = new SimpleDateFormat("yyyyMMddHHmm").format(now);
dayNow= Integer.parseInt(nowAsString);

是否可以将日期字符串转换为整数?

或者我做了一些愚蠢的事情并且有更简单的方法吗?

2 个答案:

答案 0 :(得分:3)

对于32位整数,此值太长。请尝试使用long。

请参阅http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html了解类型限制。

相关问题是您为什么要以这种格式存储日期时间。 UNIX时间戳(BTW,绝对应该是long)更方便存储和操作 - 请参阅Calendar.getTimeInMillis。

这是一种可以轻松进行日期比较和存储的格式。

答案 1 :(得分:1)

试试吧,

  

日期日期=新日期(Long.parseLong(rowItem.getDatetime()));