0

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

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

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

08-27 17:21:40.930: W/System.err(26577): java.lang.NumberFormatException: Invalid int: "201308271721"

完整错误:

08-27 17:21:40.930: W/System.err(26577): java.lang.NumberFormatException: Invalid int: "201308271721" 08-27 17:21:40.960: W/System.err(26577): 在 java .lang.Integer.invalidInt(Integer.java:138) 08-27 17:21:40.960: W/System.err(26577): 在 java.lang.Integer.parse(Integer.java:378) 08-27 17 :21:40.960: W/System.err(26577): 在 java.lang.Integer.parseInt(Integer.java:366) 08-27 17:21:40.960: W/System.err(26577): 在 java. lang.Integer.parseInt(Integer.java:332) 08-27 17:21:40.960: W/System.err(26577): 在 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);

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

还是我在做一些愚蠢的事情,有没有更简单的方法?

4

2 回答 2

3

这个值对于 32 位整数来说太长了。请尝试使用 long 代替。

有关类型限制,请参见http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

一个相关的问题是为什么要以这种格式存储日期时间。UNIX 时间戳(顺便说一句,绝对应该long也是)更便于存储和操作 - 请参阅 Calendar.getTimeInMillis。

这是一种便于日期比较和存储的格式。

于 2013-08-27T15:44:05.810 回答
1

试试看嘛,

日期 date = new Date(Long.parseLong(rowItem.getDatetime()));

于 2015-12-22T09:32:20.007 回答