我正在开发一个Android应用程序。我在这一点上陷入困境:
用户使用微调器选择时间范围。然后它显示给定范围与特定时间间隔之间的时间。我试过并且顺利但是在12之后我们必须及时打印1,这是我无法做到的。在下面添加一个例子。我不知道如何实现它。 例如。 如果用户选择9-2,我们必须生成类似
9.00 9.30 10.00 10.30 11.00 11.30 12.00 12.30 1.00 1.30 2.00
有人可以帮助我吗? 即使只是一个想法也足够了。 如果您需要我的编码,我会在稍后添加。
答案 0 :(得分:1)
这是生成时间间隔int setted range的代码。您只需要从TimeIntervalHelper
调用方法。
以下是代码:
public class TimeIntervalHelper {
public static void generateTimeInterval(final ArrayList<String> intervals, final int startHour, final boolean isStartHalf, int endHour, final boolean isEndHalf) {
final Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, startHour);
calendar.set(Calendar.MINUTE, isStartHalf ? 30 : 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
endHour = endHour == 12 ? 0 : endHour;
while (calendar.get(Calendar.HOUR) != endHour)
intervals.add(getInterval(calendar));
intervals.add(getInterval(calendar));
if (isEndHalf)
intervals.add(getInterval(calendar));
}
public static void generateTimeInterval(final ArrayList<String> intervals, final int startHour, int endHour) {
generateTimeInterval(intervals, startHour, false, endHour, false);
}
private static String getInterval(final Calendar calendar) {
final String interval = String.format(
"%d.%02d",
calendar.get(Calendar.HOUR) != 0 ? calendar.get(Calendar.HOUR) : 12,
calendar.get(Calendar.MINUTE)
);
calendar.add(Calendar.MINUTE, 30);
return interval;
}
}
以下是样本:
final ArrayList<String> intervals = new ArrayList<>();
TimeIntervalHelper.generateTimeInterval(intervals, 9, 2); // Generate from 9 to 2
TimeIntervalHelper.generateTimeInterval(intervals, 9, false, 2, true); // Generate from 9 to 2.30
答案 1 :(得分:0)
如果您只关心格式,请查看DateTimeFormatter
。示例(略有修改)
LocalDate date = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm");
String text = date.format(formatter);
LocalDate parsedDate = LocalDate.parse(text, formatter);
您应该能够管理转换为LocalDate
;-)。如果没有,请这样说(并发布您尝试过的代码)。
对于日期生成,这里有一些代码。使用旧的日期API有点困难,但是:
long intervalMillis;
Date startingDate, endDate;
List<Date> dateList = new ArrayList<Date>();
dateList.add(date);
while ( date.before(endDate) || date.equals(endDate) ) {
date = new Date(date.getTime() + intervalMillis);
dateList.append(date);
}
如果您想使用new time API,可以
Instant start, end;
Duration increment;
Instant moment = start;
List<Instant> dateList = new ArrayList<Instant>();
dateList.add(moment);
while ( moment.isBefore(end) || moment.equals(end) ) {
moment = moment.plus(increment);
dateList.add(moment);
}
答案 2 :(得分:0)
我认为您使用的是12小时的日期格式
请将您的日期格式更改为24小时,然后检查它是否有效..
谢谢..