从日期计算中排除日期

斯蒂芬

我想计算两个日期之间的时间。我一直在使用DateComponentsFormatter,它非常适合在所有语言/地区/日历中正确输出。

我想添加从这个计算中排除周末的功能。它本身似乎不支持这一点。是否有一个很好的替代方案(本地或第 3 方库)从计算中删除一组日期?

伊泰·费伯

您可以使用CalendarAPI本地执行此类计算你只需要手动编写它:

import Foundation

// The nextWeekend API is available only on 10.12 or later.
if #available(OSX 10.12, *) {

let calendar = Calendar(identifier: .gregorian)
let start = calendar.date(from: DateComponents(year: 2018, month: 3, day: 18))!
let end   = calendar.date(from: DateComponents(year: 2018, month: 4, day: 7))!

var total: TimeInterval = 0

// We'll iterate weekends from now until the target end date,
// adding the intervening time from during the week.
var current = start
while current < end {
    guard let weekend = calendar.nextWeekend(startingAfter: current) else {
        break
    }

    if weekend.start > end {
        // Our target end date is before the next weekend; add whatever time is left.
        total += end.timeIntervalSince(current)
        break
    } else {
        // There's >= 1 weekend between now and the target date; add the week in between.
        total += weekend.start.timeIntervalSince(current)
        current = weekend.end
    }
}

let formatter = DateComponentsFormatter()
formatter.allowedUnits = .day
print(formatter.string(from: total)!) // => 16d

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在JavaScript日期计算中排除周末

从报告中排除日期

在sql查询中排除日期范围

从 Firestore 中排除时间戳中的日期

计算日期之间的特定工作日,并在Javascript中排除假期

如何从角形材质的日期选择器中排除日期?

如何从日期选择器中排除以前的日期

如何从有条件的条件中排除日期?

从另一行的日期时间值中排除时间

SQL - 如何使用“datediff”从日期范围中排除周末

在熊猫数据框中排除超过 500 年的日期

如何从时序图中排除某些日期(例如,周末)?

如何在Javascript中的日期对象中排除周末

如果不是“月末”,如何在Pandas Dataframe中排除日期

SQL查询从周期表中排除日期范围

从计算中排除 0

从重叠的日期/时间范围数组中排除日期/时间范围

生成随机日期但从javascript中的数组中排除一些日期

将 X 天添加到接收日期,但从日期表中排除周末/假期

使用React Datepicker从给定日期中排除将来的日期

在两个日期之间进行搜索时,如何从表中排除日期?

在vb中排序日期

在Python中排序日期

从静态日期计算日期

如何在文件中排除包含日期或方括号的所有行

Java正则表达式从日期较大的字符串中排除特定的权重

如何在Elasticsearch映射中从“ _all”中排除所有数字和日期

从非结构化日期搜索中排除不匹配项-R

用于工作日的 PLSQL 函数并从表中排除日期