0

日付/時刻 (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): 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 に答える