首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在android中,如何在给定的两个范围之间产生时间?

在android中,如何在给定的两个范围之间产生时间?
EN

Stack Overflow用户
提问于 2016-02-06 10:09:45
回答 3查看 1.1K关注 0票数 1

我正在用android开发一个应用程序。我被困在这一点上:

用户使用旋转器选择时间范围。然后显示特定时间间隔的给定范围之间的时间。我试了很好,但12岁后,我们必须及时打印1,但我无法在下面的例子中打印,我不知道如何实现它。例如。如果用户选择9-2,我们必须生成类似的

9.30 10.00 10.30 11.00 11.30 12.30 12.30 1.00 1.30 2.00

有人能帮我吗?只要一个想法就够了。如果您需要我的编码,我稍后会在这里添加它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-06 11:38:08

下面是生成时间间隔的代码。您只需从TimeIntervalHelper调用方法即可。

以下是代码:

代码语言:javascript
运行
复制
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;
    }
}

以下是样本:

代码语言:javascript
运行
复制
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
票数 2
EN

Stack Overflow用户

发布于 2016-02-06 10:23:15

如果您只关心格式设置,请查看DateTimeFormatter。示例(稍作修改)

代码语言:javascript
运行
复制
  LocalDate date = LocalDate.now();
  DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm");
  String text = date.format(formatter);
  LocalDate parsedDate = LocalDate.parse(text, formatter);

您应该能够管理到LocalDate的转换;-)。如果没有,请这样说(并贴出您尝试过的代码)。

对于日期生成,下面是一些代码。使用旧的date API有点困难,但是:

代码语言:javascript
运行
复制
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);
}

如果你想使用新时间API,你可以

代码语言:javascript
运行
复制
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);
}
票数 0
EN

Stack Overflow用户

发布于 2016-02-06 10:33:02

我想你使用的是12小时的日期格式

请将您的日期格式更改为24小时,然后检查它是否有效。

谢谢..

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35239777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档