Comparing two times in android

前端 未结 4 915
梦如初夏
梦如初夏 2021-01-02 23:57

I have tried with the below code to compare two times:

   SimpleDateFormat sdf = new SimpleDateFormat(\"hh:mm\");
    Date inTime = sdf.parse(\"11:00\");
            


        
4条回答
  •  孤独总比滥情好
    2021-01-03 00:29

    import android.app.Dialog;
    import android.app.TimePickerDialog;
    import android.content.Context;
    import android.os.Bundle;
    import android.support.v4.app.DialogFragment;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.TimePicker;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    /**
     * Created by Ketan Ramani on 20/9/18.
     */
    
    public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener {
        private static EditText text;
        private static TextView textTv;
        private static Date startDate = null;
        private static Date fromTime = null;
    
        public static TimePickerFragment getInstance(View view) {
            if (view instanceof EditText) {
                text = (EditText) view;
            } else if (view instanceof TextView) {
                textTv = (TextView) view;
            }
    
            return new TimePickerFragment();
        }
    
        public static TimePickerFragment getInstance(View view, Date fromTimeCalendar) {
            if (view instanceof EditText) {
                text = (EditText) view;
            } else if (view instanceof TextView) {
                textTv = (TextView) view;
            }
    
            fromTime = fromTimeCalendar;
    
            return new TimePickerFragment();
        }
    
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            final Calendar c = Calendar.getInstance();
            int hour = c.get(Calendar.HOUR_OF_DAY);
            int minute = c.get(Calendar.MINUTE);
    
            // Create a new instance of TimePickerDialog and return it
            return new TimePickerDialog(getActivity(), this, hour, minute, true/*DateFormat.is24HourFormat(getActivity())*/);
        }
    
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
    
            if (fromTime != null) {
    
                Calendar fromTimeCal = Calendar.getInstance();
                fromTimeCal.setTime(fromTime);
    
                SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
                Date toDate = null;
                try {
                    toDate = sdf.parse(String.format("%02d", hourOfDay) + ":" + String.format("%02d", minute));
                } catch (ParseException e) {
                    e.printStackTrace();
                }
    
                Calendar toTimeCal = Calendar.getInstance();
                toTimeCal.setTime(toDate);
    
                if (toTimeCal.getTimeInMillis() 12 ? hourOfDay - 12 : hourOfDay;
            hour = hourOfDay > 9 ? hourOfDay : hourOfDay;
            min = minute > 9 ? minute : minute;
    
            return String.format("%02d", hour) + ":" + String.format("%02d", min) + " " + am_pm;
        }
    
        public void showTimePickerDialog(Context context, View view) {
            DialogFragment newFragment = TimePickerFragment.getInstance(view);
            newFragment.show(((AppCompatActivity) context).getSupportFragmentManager(), "TimePicker");
        }
    
        public void showTimePickerDialog(Context context, View view, Date fromTime) {
            DialogFragment newFragment = TimePickerFragment.getInstance(view, fromTime);
            newFragment.show(((AppCompatActivity) context).getSupportFragmentManager(), "TimePicker");
        }
    }
    

    Use

    @Override
        public void onClick(View v) {
            switch (v.getId()) {
    
                case R.id.et_from_time:
    
                    TimePickerFragment fromTime = new TimePickerFragment();
                    fromTime.showTimePickerDialog(context, v, null);
    
                    mToTimeEt.setText("Select To Time");
                    break;
    
                case R.id.et_to_time:
    
                    if(mFromTimeEt.getText().toString().equalsIgnoreCase("Select From Time")){
                        Helper.showToast(context,"Please, select from time first");
                    } else {
                        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
                        Date fromDate = null;
                        try {
                            fromDate = sdf.parse(mFromTimeEt.getText().toString());
                        } catch (ParseException e) {
                            e.printStackTrace();
                        }
    
                        TimePickerFragment toTime = new TimePickerFragment();
                        toTime.showTimePickerDialog(context, v, fromDate);
                    }
                    break;
            }
        }
    

    This class will work for EditText and TextView and set time to respected EditText or TextView if To time is After From Time in HH:mm a Format

提交回复
热议问题