【问题标题】:How to save a time from the time picker and compare it如何从时间选择器中节省时间并进行比较
【发布时间】:2013-04-12 05:23:29
【问题描述】:

我正在编写一个应用程序,我需要从开始时间选择器获取用户设置时间,并从结束时间选择器获取用户设置时间。然后将开始时间和结束时间与当前时间进行比较。如果当前时间等于开始时间,则手机静音。如果结束时间等于当前时间,则取消静音电话。任何帮助,尤其是代码示例,将不胜感激。提前谢谢。

public TimePickerDialog.OnTimeSetListener sTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            sHour = hourOfDay;
            sMinute = minute;
            updateDisplay();
            displayToast();

        }
    };

    public TimePickerDialog.OnTimeSetListener eTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            eHour = hourOfDay;
            eMinute = minute;
            updateDisplayE();
            displayToastE();

        }
    };

    public void updateDisplay() {
        startTime.setText(new StringBuilder().append(pad(sHour)).append(":")
                .append(pad(sMinute)));
        final int compareStartHour = sHour;
        Log.e("beginning", "Value " + sHour);
    }

    public void updateDisplayE()
 {
        endTime.setText(new StringBuilder().append(pad(eHour)).append(":")
                .append(pad(eMinute)));
    }

    private void displayToast() {
        Toast.makeText(
                this,
                new StringBuilder().append("Time choosen is ").append(
                        startTime.getText()), Toast.LENGTH_SHORT).show();

    }

    private void displayToastE() {
        Toast.makeText(
                this,
                new StringBuilder().append("Time choosen is ").append(
                        endTime.getText()), Toast.LENGTH_SHORT).show();

    }

    private static String pad(int c) {
        if (c >= 10)
            return String.valueOf(c);
        else
            return "0" + String.valueOf(c);
    }

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.preset_edit);
        save = (Button) findViewById(R.id.btnSave);
        TextView eventTxt = (TextView) findViewById(R.id.txtViewEvent);
        startTime = (Button) findViewById(R.id.btnStartTime);
        endTime = (Button) findViewById(R.id.btnEndTime);

        startTime.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                showDialog(TIME_DIALOG_ID);
            }
        });

        endTime.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                showDialog(TIME_DIALOG_ID2);
            }
        });

【问题讨论】:

    标签: android time compare timepicker


    【解决方案1】:

    使用Calendar类实例:

    Calendar calendar=Calendar.getInstance();
    calendar.set(Calendar.HOUR, tPicker.getCurrentHour());
    calendar.set(Calendar.MINUTE, tPicker.getCurrentMinute());
    calendar.set(Calendar.SECOND, tPicker.getCurrentSecond());
    //you can also set the day, month, year etc., default values are today's
    

    然后调用

    calendar.getTimeInMillis()
    

    这将返回以毫秒为单位的时间值 (long),您可以轻松地将其与另一个进行比较。

    有关详细信息,请参阅Calendar 类文档。

    【讨论】:

    • 谢谢我会试试这个@deville
    【解决方案2】:

    你也可以试试这个..它对我有用...首先从 TimePickerDialog 中花一点时间,然后将其放入 String 然后应用以下代码..

    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
                java.util.Date d_min = null;
                java.util.Date d_max = null;
                try {
                    d_min = sdf.parse(time_min);//time_min is the Minimum time in String
                    d_max = sdf.parse(time_max);time_max is the Maximun time in String
                    d_compare = d_max.compareTo(d_min);
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
     if (d_compare < 0) {
                    check = 3;
                    showDialog(0);
                } 
    

    您可以像这样比较当前时间..希望这对您有所帮助.. 你也可以看看这个...current time

    还有这个...link

    【讨论】:

    • 谢谢!我会试试这个@Meghs
    • 我一定会的,我会尝试所有建议,如果它们有效,我会接受。再次感谢! @Meghs
    • 你说这对你有用,所以你在 java.util.Date d_max = null; 之后是否经常遇到语法错误? ?要您添加另一个 {? @Meghs
    • 不,它不会给出任何语法错误。在我的情况下工作正常。如果您遇到错误,请尝试使用 Date 对象。
    【解决方案3】:

    从 TimePicker 获取时间并保存:

    Time selectedTime = new Time(sHour, sMinute, 0);
    

    将其与当前时间或任何其他时间进行比较:

    Date time = MyClassName.convertStringToTime(selectedTime.toString());
    

    并将两个日期值传递给函数:

    public static int compareTime(Date date1, Date date2) {
            int result = date1.compareTo(date2);
    
            if (result > 0) //
            {
                return 1;
            } else if (result == 0) {
                return 0;
            }
            return -1;
    
        }
    

    编辑: 公共静态类 MyClassName{ 公共静态日期 convertStringToTime(String strTime) { System.out.println("要转换的时间:"+strTime+"."); 日期 dateTobeReturned = null;

                DateFormat sdf = new SimpleDateFormat(DateUtility.TIME_FORMAT);
    
                try {
                    dateTobeReturned = sdf.parse(strTime);
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
                System.out.println("Time: " + sdf.format(dateTobeReturned));
    
    
                return dateTobeReturned;
            }
        }
    

    如果您有任何疑问,请询问。希望对您有所帮助。

    【讨论】:

    • 使用 tPicker.getCurrentHour() 究竟您指的是 tPicker 什么?这是我的时间选择器的方法。公共 TimePickerDialog.OnTimeSetListener sTimeSetListener = new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { sHour = hourOfDay; sMinute = 分钟;更新显示();显示吐司(); } };
    • 它的 TimePicker 变量@user2247767
    • 好的,它希望我匹配不带参数的构造函数时间,所以我无法获得小时和分钟@TheReader
    • @user2247767 你能在你的问题中显示你的一些代码吗?请编辑它。所以我可以对此有所了解
    • 我添加了一些代码。我有两个按钮,您单击它们会调出时间选择器。一个用于开始时间,另一个用于结束时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    相关资源
    最近更新 更多