1

私のアプリでは、date/timePickers で日付/時刻を設定します。

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 Date datahora;
 datahora = (Date) formatter.parse(data);

設定した時間を電話の実際の時間と比較する必要があります。だから私はこれを試しました:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date datahora;
String datatmp = formatter.format(new Date(0));
 try {
    datahora = (Date) formatter.parse(data);
    if(datahora <= datatmp)

しかし、チェックできないと言われているので間違っていることはわかっていますdate > stringが、実際の時間を確認する方法を知ることができません。

編集

LogCat

    10-08 20:14:07.453: E/AndroidRuntime(261): FATAL EXCEPTION: main
    10-08 20:14:07.453: E/AndroidRuntime(261): java.lang.IllegalStateException: get field slot from row 0 col -1 failed
    10-08 20:14:07.453: E/AndroidRuntime(261):  at android.database.CursorWindow.getString_native(Native Method)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at android.database.CursorWindow.getString(CursorWindow.java:329)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:49)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at com.example.mensagem.Mensagenssalvas$1.onItemClick(Mensagenssalvas.java:59)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at android.widget.AdapterView.performItemClick(AdapterView.java:284)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at android.widget.ListView.performItemClick(ListView.java:3382)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at android.os.Handler.handleCallback(Handler.java:587)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at android.os.Handler.dispatchMessage(Handler.java:92)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at         android.os.Looper.loop(Looper.java:123)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at android.app.ActivityThread.main(ActivityThread.java:4627)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at java.lang.reflect.Method.invokeNative(Native Method)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at java.lang.reflect.Method.invoke(Method.java:521)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    10-08 20:14:07.453: E/AndroidRuntime(261):  at dalvik.system.NativeStart.main(Native Method)
4

2 に答える 2

6

現在の日付/時刻を取得するには、新しいDateオブジェクトを作成するだけです。

使用する日付を比較するにはDate.compareTo():

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now = new Date();
int difference = now.compareTo(formatter.parse(data));

docsによると、次のdifferenceようになります。

引数 Date がこの Date と等しい場合は値 0。この Date が Date 引数より前の場合は 0 未満の値。この Date が Date 引数より後の場合は 0 より大きい値。

if (difference == 0) {
    // the dates are equal
}
else if (difference < 0) {
    // the date is before now
}
else {
    // the date is after now
}
于 2012-10-16T19:54:05.400 に答える
0

もちろん、日付と文字列を比較することはできません。

以下を試してください

Date datatmp = new Date();  

 try {
       datahora = (Date) formatter.parse(data);
        if( datahora.before(datatmp) )
.
.

Java Docs で Date を確認すると、 に加えてafterbefore機能がありますcompareTo

ベスト、ローハン

于 2012-10-16T19:57:33.770 に答える