我需要一个变量,其中包含以分钟为单位的实际年份月份和日期
应该在1061841278左右
var plus = calendar.dateComponents([.year, .month, .day], from: Current).minute
我写了这个,但是没用
答案 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天。