2012-02-01 2 views
0

в моем приложении, я использовал DateField, чтобы получить будущее время, и я сохраняю время как строку, как 1 фев. 2012 23:49, чтобы составить расписание работы. И я хочу сравнить это время с течением времени. Если расписание = текущий ток + 4 часа, появится диалоговое окно, напоминающее работу. Но сравнить 2 раза так сложно. Потому что это зависит от некоторых примеров примера AM или PM, или если график времени 2 февраля 01:00, а текущий ток - 1 Feb 21:00 PM, диалог также отображается.Как сравнить 2 раза на ежевике?

Может ли кто-нибудь помочь мне сравнить все правильно, если расписание = время текущего + 4 часа?

+0

Как вы сравнив раз? Вы разбираете строки обратно в объекты даты? – Thomas

+0

, пожалуйста, объясните одну вещь, которую вы хотите сравнить два раза? \ –

+0

Я использую DateField для пользователя, которое занимает время в будущем. Я сохраняю это время как строку (используйте метод dateField.toString()). И когда это время будет спасено. Мое приложение всегда проверяет текущее время использования clockUpdated(). Если текущий ток + 4 часа = время сохранено, запустите диалог. Но в некоторых случаях трудно сравнить пример, когда время сэкономлено, начинается день месяца (пример Feb), а текущий ток - в конце января ... Я хочу правильно сравнивать все случаи. –

ответ

1

Попробуйте

import net.rim.device.api.io.http.HttpDateParser; 
import net.rim.device.api.ui.UiApplication; 
import net.rim.device.api.ui.component.Dialog; 
import net.rim.device.api.ui.container.MainScreen; 

public class StartUp extends UiApplication { 
    /** 
    * Entry point for application 
    */ 
    public static void main(String[] args) { 
     StartUp start=new StartUp(); 
     start.enterEventDispatcher(); 

    } 
    /** 
    * Creates a new StartUp object 
    */ 
    public StartUp() { 
     // Push a screen onto the UI stack to have something to render before we attempt 

     pushScreen(new DateComparision()); 



    } 
    class DateComparision extends MainScreen 
    { 
     public DateComparision() 
     { 
      String first="31 Jan 2012 23:49:01";//formate should same 
      long time1=HttpDateParser.parse(first)+(4*60*60*1000);//means after 4 hours 
      //time1= 1328068141000 
      String second="1 Feb 2012 03:49:01"; 
      long time2=HttpDateParser.parse(second); 
      //time2=1328068141000 
      System.out.println(time2+" "+time1); 
      if(time2==time1){ 
       displayMessage("Mached"); 
      }else 
      { 
       displayMessage("Not Mached"); 
      } 
     } 
    } 
    public static void displayMessage(final String data){ 
     UiApplication.getUiApplication().invokeLater(new Runnable() { 
      public void run() { 
       Dialog.inform(data); 
      } 
     }); 
    } 
} 
+0

Отлично, спасибо вам большое –

0

Вам нужно «нормализовать» дату: используйте временную метку Unix, возвращенную java.util.date.

+0

Не могли бы вы объяснить ясно? –

+1

Прочтите http://en.wikipedia.org/wiki/Unix_time и http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Date.html Используйте время Unix для выполнения математических упражнений (как добавлять и вычитать) по датам и использовать формат даты как 2 февраля 2012 года 09:00 только для презентации пользователя. – rosco

1

Экономия времени в том же формате означает, что это 1 фев. 2012 23:49 и второй раз, когда вы хотите сравнить, если он находится в Am или Pm, измените это на 24 часа. И сравните или преобразуйте Date в String и сравните String. Если обе строки равны, то выполняйте свою задачу.

+0

Я сделал это, но он не совсем корректен для некоторых случаев о конце дня текущего месяца и начале дня следующего месяца. –

+0

@BinhVova не понял, что вы хотите сказать ??? извините ... – BBdev

+0

Есть ли способ конвертировать формат 12h в формат 24h? –

Смежные вопросы