2

I have two Times. Start and end. Now i want to display all times between them in 1 hour gap.

For example:

I have 00:00-23:55.

Output:-

12:00 AM - 01:00 AM
01:00 AM - 02:00 AM and so on.

Please help me to find this.

Thanks in advance.

Hardik Joshi
  • 9,477
  • 12
  • 61
  • 113
  • Please elaborate on what type of objects you are using to store the two times. Android itself also provides the android.text.format.Time object. With that object, it is easy to find the hour e.g.: time.HOUR – zeiger Sep 10 '12 at 15:02
  • @zeiger the time 00:00-23:25 is from webservice. – Hardik Joshi Sep 11 '12 at 04:18
  • http://stackoverflow.com/questions/2161750/android-controlling-a-task-with-timer-and-timertask – Roadies Sep 11 '12 at 06:28
  • String s = "12:30:00"; Date d = new SimpleDateFormat("hh:mm:ss").parse(s); new SimpleDateFormat("h:mma").format(d).toLowerCase(); try it –  Sep 11 '12 at 08:37

2 Answers2

9
String date1 = "26/02/2011";
String time1 = "00:00 AM";
String date2 = "26/02/2011";
String time2 = "12:00 PM";

String format = "dd/MM/yyyy hh:mm a";

SimpleDateFormat sdf = new SimpleDateFormat(format);

Date dateObj1 = sdf.parse(date1 + " " + time1);
Date dateObj2 = sdf.parse(date2 + " " + time2);
System.out.println("Date Start: "+dateObj1);
System.out.println("Date End: "+dateObj2);

//Date d = new Date(dateObj1.getTime() + 3600000);


long dif = dateObj1.getTime();
while (dif < dateObj2.getTime()) {
    Date slot = new Date(dif);
    System.out.println("Hour Slot --->" + slot);
    dif += 3600000;
}

OUTPUT :

Date Start: Sat Feb 26 00:00:00 IST 2011
Date End: Sat Feb 26 12:00:00 IST 2011
Hour Slot --->Sat Feb 26 00:00:00 IST 2011
Hour Slot --->Sat Feb 26 01:00:00 IST 2011
Hour Slot --->Sat Feb 26 02:00:00 IST 2011
Hour Slot --->Sat Feb 26 03:00:00 IST 2011
Hour Slot --->Sat Feb 26 04:00:00 IST 2011
Hour Slot --->Sat Feb 26 05:00:00 IST 2011
Hour Slot --->Sat Feb 26 06:00:00 IST 2011
Hour Slot --->Sat Feb 26 07:00:00 IST 2011
Hour Slot --->Sat Feb 26 08:00:00 IST 2011
Hour Slot --->Sat Feb 26 09:00:00 IST 2011
Hour Slot --->Sat Feb 26 10:00:00 IST 2011
Hour Slot --->Sat Feb 26 11:00:00 IST 2011
MAC
  • 15,799
  • 8
  • 54
  • 95
1

Naming may not be proper also can be better formed but for now as try and error this code works.

Regarding 00:00-23:55, parse it using '-', first part can be 'startTime' and second can be 'endTime'

package demo.orientaion.change.run_cmd;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class TimeDiffCalc {

public TimeDiffCalc() {

}

public Calendar addHr(String startTime) {
    SimpleDateFormat df = new SimpleDateFormat("HH:mm");
    Date d;

    Calendar gc = null ;
    try {
        d = df.parse(startTime);

        gc = new GregorianCalendar();
        gc.setTime(d);
        gc.add(Calendar.HOUR, 1);
    } catch (ParseException e) {
        e.printStackTrace();
    } 
    return gc;
}

public void diffCalc(String time1, String time2) {

    long diff=0;
    SimpleDateFormat format = new SimpleDateFormat("HH:mm");
    Date date1 = null;
    try {
        date1 = format.parse(time1);
        Date date2 = format.parse(time2);
        diff = date2.getTime() - date1.getTime();
        Date date3 ;
        String string = time1;
        while(true)
        {
            Calendar gc = addHr(string) ;
            date3 = gc.getTime();
            string = getHrMin(gc.get(Calendar.HOUR_OF_DAY))+":"+getHrMin(gc.get(Calendar.MINUTE));
            if(date2.getTime()-date3.getTime()>=0)
            {
                System.out.println("diff Hours :: "+string);
            }
            else
            {

                break;
            }

        }

    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println("Difference in Houres:"+getDate(diff));

}

private String getDate(long diff) {
    long hours=diff/(60*60*1000);
    long minutes=(diff%(60*60*1000))/(60*1000);

    long sec=((diff%(60*60*1000))%(60*1000))/1000;
    String formateddate="";
    if(hours<10)
    {
        formateddate="0"+hours;
    }else{
        formateddate=""+hours;
    }
    if(minutes<10)
    {
        formateddate=formateddate+":0"+minutes;
    }else{
        formateddate=formateddate+":"+minutes;
    }
    if(sec<10)
    {
        formateddate=formateddate+":0"+sec;
    }else{
        formateddate=formateddate+":"+sec;
    }

    return formateddate;
}

private String getHrMin(int time) {
    String formatedTime;
    if(time<10)
    {
        formatedTime="0"+time;
    }else{
        formatedTime=""+time;
    }
    return formatedTime;
}

/**
 * @param args
 */
public static void main(String[] args) {
    TimeDiffCalc calc = new TimeDiffCalc();

    String startTime = "00:00:00";
    String endTime = "23:53:00";
    calc.diffCalc(startTime, endTime);
}

}
Chanchal Shelar
  • 363
  • 2
  • 12