简体   繁体   English

如何在颤振/飞镖中创建 30 分钟的时间段

[英]how to create 30 minutes time slots in flutter/dart

How to create time slots in flutter / dart?如何在颤振/飞镖中创建时间段?

I want to make a list of 30 minutes time slots from given start time and end time.我想从给定的开始时间和结束时间列出 30 分钟的时间段。

Example: start time 9:00 AM end Time is 10:00 PM list will be示例:开始时间 9:00 AM 结束时间是 10:00 PM 列表将是

List<String> timeSlots = ['9:30 AM','10:00 AM','10:30 AM','11:00 AM'....]

Is there any library to solve this problem?有什么库可以解决这个问题吗?

You can create this with a generator, though the syntax is a little ugly since the TimeOfDay class added by Flutter isn't very powerful:您可以使用生成器创建它,但语法有点难看,因为 Flutter 添加的TimeOfDay类不是很强大:

Iterable<TimeOfDay> getTimes(TimeOfDay startTime, TimeOfDay endTime, Duration step) sync* {
  var hour = startTime.hour;
  var minute = startTime.minute;

  do {
    yield TimeOfDay(hour: hour, minute: minute);
    minute += step.inMinutes;
    while (minute >= 60) {
      minute -= 60;
      hour++;
    }
  } while (hour < endTime.hour ||
           (hour == endTime.hour && minute <= endTime.minute));
}

Usage:用法:

final startTime = TimeOfDay(hour: 9, minute: 0);
final endTime = TimeOfDay(hour: 22, minute: 0);
final step = Duration(minutes: 30);

final times = getTimes(startTime, endTime, step)
                .map((tod) => tod.format(context))
                .toList();

print(times);

// Results:
// [9:00 AM, 9:30 AM, 10:00 AM, 10:30 AM, 11:00 AM, 11:30 AM, 12:00 PM, 12:30 PM, 1:00 PM, 1:30 PM, 2:00 PM, 2:30 PM, 3:00 PM, 3:30 PM, 4:00 PM, 4:30 PM, 5:00 PM, 5:30 PM, 6:00 PM, 6:30 PM, 7:00 PM, 7:30 PM, 8:00 PM, 8:30 PM, 9:00 PM, 9:30 PM, 10:00 PM]

Create a list with length : List.generate创建一个长度为: List.generate的列表

List<String>.generate(3, (int index) => "time ${index + 1}"); 
// ["time 1", "time 2", "time 3"]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM