【问题标题】:How to compare 2 time on blackberry?如何在黑莓上比较 2 次?
【发布时间】:2012-02-02 17:38:33
【问题描述】:

在我的应用程序中,我使用 DateField 获取未来时间,并将时间保存为字符串,例如 1 Feb 2012 23:49 以制定工作时间表。我想将这个时间与当前时间进行比较。如果时间表 = 当前时间 + 4 小时,则会出现一个对话框提醒工作。 但是比较2次实在是太难了。因为它取决于某些情况,例如上午或下午,或者如果时间表是 2 Feb 01:00 AM 并且当前时间是 1 Feb 21:00 PM ,对话框也会显示.

如果时间表 = 当前时间 + 4 小时,谁能帮我正确比较完整?

【问题讨论】:

  • 你如何比较时代?您是否将字符串解析回日期对象?
  • 请解释一件事你想比较两次?\
  • 我使用 DateField 让用户在未来抽出时间。我将这段时间保存为字符串(使用方法 dateField.toString() )。当这个时间被保存时。我的应用程序总是检查当前使用clockUpdated() 的时间。如果当前时间 + 4 小时 = 节省的时间,则运行一个对话框。但是有些情况比较困难,例如当节省的时间是一个月的开始日(例如二月),当前时间是一月的结束日......我想对所有情况进行正确比较。
  • 简单尝试将日期或时间或日期和时间转换为毫秒,并将其与当前时间(以毫秒为单位)进行比较。您可以轻松实现您的要求。如果您需要任何示例,请告诉我我会为您准备,请快速回复我
  • 看我的回答如果你有更多的疑问请来这里我会帮你chat.stackoverflow.com/rooms/4014/…

标签: java blackberry blackberry-eclipse-plugin


【解决方案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);
            }
        });
    }
}

【讨论】:

    【解决方案2】:

    以相同格式保存时间意味着像这样 2012 年 2 月 1 日 23:49 和第二次您想要比较的时间是上午还是下午将其更改为 24 小时格式。并比较或将日期转换为字符串并比较字符串。如果两个字符串相等,则执行您的任务。

    【讨论】:

    • 我这样做了,但对于某些关于本月结束日和下个月开始日的情况,它没有正确填写。
    【解决方案3】:

    您需要“标准化”日期:使用 java.util.date 返回的 Unix 时间戳。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多