如何将时间设置与实际时间进行比较?

baT*_*imá 1 time android date

在我的应用程序中,您可以使用date/timePickers设置日期/时间.

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

我需要将我设置的时间与手机的实际时间进行比较.所以我试过这个:

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)
Run Code Online (Sandbox Code Playgroud)

但我确实知道它的错误,因为它说它无法检查,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)
Run Code Online (Sandbox Code Playgroud)

Nat*_*usa 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));
Run Code Online (Sandbox Code Playgroud)

根据文件,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
}
Run Code Online (Sandbox Code Playgroud)