如何将当前年月日转换为分钟?

时间:2019-11-25 17:56:19

标签: ios swift xcode

我需要一个变量,其中包含以分钟为单位的实际年份月份和日期

应该在1061841278左右

var plus = calendar.dateComponents([.year, .month, .day], from: Current).minute

我写了这个,但是没用

1 个答案:

答案 0 :(得分:2)

您的问题很棘手,因为您的参考日期似乎是在采用公历之前。因此,您必须认真思考要从几号开始算起。

但是,让我们假设您的意思是从UTC的公历1年1月1日午夜开始计数。这么说是胡说八道,因为当时公历和UTC都不存在。但是我们可以推断,这将显示如何解决其他日期的问题。

首先,您需要一个日历和一个时区来执行计算。

let gregorian = Calendar(identifier: .gregorian)
let utc = TimeZone(abbreviation: "UTC")!

然后,您需要一个参考日期:

let ref = gregorian.date(from: DateComponents(timeZone: utc, year: 1, month: 1, day: 1))!

然后您可以在几分钟内执行计算:

let diff = gregorian.dateComponents([.minute], from: ref, to: Date()).minute

当我这样做时,答案是1061841271,非常接近您的期望。

在这个时代创建参考日期时要非常小心。您将需要阅读《日期和时间编程指南》的Historical Dates部分,以确保正确处理日历。特别是,没有0年,由于朱利安/格里高里安调整,Calendar在1582年跳过了10天。