algorithm - 如何查找从现在开始到特定工作日的最近的将来日期?

标签 algorithm date datetime dart logic

我有一个约会管理方案,其中有一个人的availableWeekDays列表字段,可以在工作日的工作日进行预订。例如,如果星期一有空,我在availableWeekDays列表中的值为1。
我已经使用DateTime将currentDate存储在DateTime.now()变量中。
我要做的是首先看一下今天的工作日是否与某人的availableWeekDay相匹配。如果是,则bookingDate有效,否则我必须与人的工作日一起寻找最近的将来日期。我尝试了以下解决方案,但由于我正在使用第一个索引,因此它可以工作一周。

void main() {
  
  DateTime bookingDate = DateTime.now();
  int availableWeekDays = [1,4,7];
  
  getDate(){
    if(bookingDate.weekday == availableWeekDays[0]){
      print("Available on $bookingDate ");
    } else {
      bookingDate = bookingDate.add(Duration(days: 1));
      getDate();
    }
  }
  
  getDate();
  
}
我想找到列表中所有平日中最接近的将来日期。

最佳答案

DateTime findNearestWeekday(List<int> availableWeekdays) {
  assert(availableWeekdays.isNotEmpty);

  var date = DateTime.now();
  final weekday = date.weekday;

  for (var num in availableWeekdays) {
    if (num == date.weekday) {
      return date;
    } else if (date.weekday < num) {
      return date.add(Duration(days: num - weekday));
    }
  }

  /// I have assumed that you will always have a sorted list of available
  /// weekdays, in case you do not have a sorted list, either you can sort
  /// the list first or just use this line (instead of the last one),
  ///
  /// ```dart
  /// import 'dart:math'; /// Add on Top of file.
  ///
  /// return date.add(Duration(days: 7 - weekday + availableWeekdays.reduce(min)))
  /// ```
  ///
  /// I will prefer to pre sort the array before storing it somewhere,
  /// because it will add an additional dependency dart:math


  return date.add(Duration(days: 7 - weekday + availableWeekdays[0]));
}

关于algorithm - 如何查找从现在开始到特定工作日的最近的将来日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63460102/

相关文章:

algorithm - 有效的猜测算法

arrays - 你能帮我解决这个数组问题吗?

mysql - 在 MySQL 中,是否可以将日期设置为列名

java - 如何检查Java日期类型的有效性?

python - 使用 "$gte"和 "$lte"时 Pymongo 返回错误

python - 在Python中创建int和DateTime的列表

php - 为什么我不能在 php 中成功地减去两个日期时间值?

algorithm - 使用有限自动机作为容器的键

java - 我正在使用processing3处理凸包项目,有人可以告诉我是否有退出函数(不是整个程序)的方法吗?

javascript - 获取给定开始日期的结束日期基准