我有两次打开和关闭。我想生成尽可能多的插槽,以固定的分钟数可以容纳在定义的范围内。例如,开放时间:12:30 pm和关闭时间:3:30 pm。因此,在这个特定范围内,我必须增加分钟数,例如每次增加15分钟,直到时间接近结束时间。就像12:45,12:30,........,3:15,3:30 pm正是在这里我想完成循环,但就我而言,它从12:30上升到12:06 am pm
String newTime = "";
SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm a");
Date date = dateFormat.parse(_model.getClinic_time_from());
SimpleDateFormat dateFormat1 = new SimpleDateFormat("hh:mm a");
Date date1 = dateFormat1.parse(_model.getClinic_time_to());
Date temp = date;
while (date1.compareTo(temp) < 0)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(temp);
calendar.add(Calendar.MINUTE, Integer.parseInt(_model.getSlot()));
newTime = dateFormat.format(calendar.getTime());
Apt_time_model ap = new Apt_time_model(dateFormat.format(temp.getTime()),newTime,"no status");
Apt_time_model ap1 = new Apt_time_model(ap.getApt_time_from(), ap.getApt_time_to(),ap.getStatus());
list.add(ap1);
temp = dateFormat.parse(newTime);
}
您正在使用可怕的日期-日期类,而这些类早已被JSR 310中定义的现代java.time类所取代。有关较旧的Java,请参见ThreeTen-Backport项目。对于较旧的Android,请参见ThreeTenABP项目。
对于没有日期和时区的一天中的时间,请使用LocalTime
类。
[12:30 pm和关闭时间:3:30 pm
LocalTime
以15分钟为增量,直到达到关闭时间。
LocalTime open = LocalTime.of( 12 , 30 ) ;
LocalTime close = LocalTime.of( 15 , 30 ) ;
List< LocalTime > slots = new ArrayList<>() ;
LocalTime lt = open ;
while( lt.isBefore( close ) )
{
slots.add( lt ) ;
lt = lt.plusMinutes( 15 ) ;
}
框架内置于Java 8及更高版本中。这些类取代了麻烦的旧java.time日期时间类,例如legacy,java.util.Date
和java.util.Date
。
要了解更多信息,请参见Calendar
。并在Stack Overflow中搜索许多示例和说明。规格为Calendar
。
SimpleDateFormat
项目现在位于SimpleDateFormat
中,建议迁移到Oracle Tutorial类。
您可以直接与数据库交换java.time对象。使用兼容JSR 310或更高版本的Joda-Time。不需要字符串,不需要maintenance mode类。
从哪里获取java.time类?
java.sql.*
和更高版本-具有捆绑实施的标准Java API的一部分。