【问题标题】:Getting range of dates from two different dates [duplicate]从两个不同的日期获取日期范围[重复]
【发布时间】:2018-02-24 08:37:24
【问题描述】:

我有两个日期:初始日期和最终日期。给定月份,我需要能够快速获得所有临时日期。问题是日期中的每个数字都是由一个变量引起的。原因是我使用带范围的日期选择器,但所有值都是单独给出的(如 startDay、startMonth、startYear 和 endDay、endMonth、endYear)。所以,我需要获取这些日期之间的所有日期。它必须看起来像这样:

"24/02/2018|25/02/2018|26/02/2018|27/02/2018|28/02/2018|01/03/2018"

看看这个:01/03/2018。

解决方案:

fun getDaysBetweenDates(startdate: Date, enddate: Date): List<String> {
    val dates = ArrayList<String>()
    val calendar = GregorianCalendar()
    calendar.time = startdate

    while (calendar.time.before(enddate)) {
        val result = calendar.time
        val formatter = SimpleDateFormat("dd/MM/yyyy")
        val today = formatter.format(result)
        today.split("|")
        dates.add(today)
        calendar.add(Calendar.DATE, 1)
    }
    return dates
}

好的,感谢您对 OleV.V. 的帮助。和 asm0dey。

【问题讨论】:

  • 请搜索。以前有人问过并回答过。
  • 它也被多次询问和回答。 Here, for example: how to get a list of dates between two dates in java。无论如何去搜索更多,我不太可能找到最好的答案。
  • @OleV.V.哎哟。对不起,我不在线。所以,我搜索了,但由于某种原因我没有找到它。 (显然谷歌没有产生正常的结果,但在这里我总是忘记我可以直接搜索)。好吧,现在我来看看你提供什么。
  • @OleV.V.好吧,如果它会有所帮助,请查看我的编辑。再次,如果它会有所帮助....
  • 感谢编辑。 “……ThreeTenABP,但是,我的理解是,它的使用效率非常低。”未敢苟同。 LocalDate 来自 ThreeTenABP,我希望它在高效的代码编写、高效的维护和高效的运行时性能方面都是高效的。我不知道你从哪里得到其他声明。

标签: java android calendar kotlin daterangepicker


【解决方案1】:

看起来您可以通过简单的 while 循环来实现您想要的 - 只需将天数逐一添加到初始日期,直到您到达日期范围的末尾。

它看起来像

val interimDates = arrayListOf<Date>()
var initial: Date = Date()// obtained earlier
val c = Calendar.getInstance()
c.time = initial
while (initial < finalDate /*also obtained earlier*/) {
    c.add(Calendar.DATE, 1)
    interimDates.add(c.time)
    initial = c.time
}

最后interimDates 将包含所有临时日期

【讨论】:

  • 它应该可以工作。但是DateCalendar 类早已过时,尽管它们的名称它们只是不准确地符合要求,因为它们需要的不仅仅是日历中的日期。最好将ThreeTenABP 添加到您的Android 项目并使用org.threeten.bp.LocalDate
  • @OleV.V.如果是 Java - 我建议使用 LocalDate,但任务很简单,您的项目中不需要再添加一个库
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
相关资源
最近更新 更多