Swift 日期计算返回了错误的值
我试图计算两个日期之间的差异,以秒为单位。下面的代码返回不正确的值(与现有的perl脚本相比,手动和使用web)。我遵循了论坛上发布的许多建议,但返回的结果并不正确。请告知 操场如下:Swift 日期计算返回了错误的值,swift,date,Swift,Date,我试图计算两个日期之间的差异,以秒为单位。下面的代码返回不正确的值(与现有的perl脚本相比,手动和使用web)。我遵循了论坛上发布的许多建议,但返回的结果并不正确。请告知 操场如下: 主要错误是日期格式:mm是分钟,mm是月 然而,Calendar计算日期差异比可怕的86400数学更可靠 或使用DateComponents let startMon = 05 let startMday = 26 let startYear = 2016 let startComponents = DateCo
主要错误是日期格式:
mm
是分钟,mm
是月
然而,Calendar
计算日期差异比可怕的86400数学更可靠
或使用DateComponents
let startMon = 05
let startMday = 26
let startYear = 2016
let startComponents = DateComponents(year: startYear, month: startMon, day: startMday)
let nowComponents = Calendar.current.dateComponents([.year, .month, .day], from: Date())
let difference = Calendar.current.dateComponents([.year, .month, .day], from: startComponents, to: nowComponents)
print(difference)
对于初学者:月份的日期格式为“MM”,而不是“MM”。记录在案。确实如此。一个简单的
打印(startDateFormatted)
会显示2016-01-25 22:00:00+0000
@Brad:调试似乎是一门垂死的艺术…不是这个老的PDP 11宏黑客的作品…谢谢你的更正和提示。听起来我需要离开86400数学。@vadian在解析固定日期格式时,您忘记将DateFormatter的区域设置设置为“en_US_POSIX”
,并将其日历设置为。gregorian
@瓦迪安,我如何打印两个日期之间的秒差?而不是使用[.year、.month、.day]
使用[.second]
let startMon = 05
let startMday = 26
let startYear = 2016
let startDateStr = "\(startYear)/\(startMon)/\(startMday)"
let dateFormatter = DateFormatter()
let currentDate = Date()
dateFormatter.locale = Locale(identifier : "en_US_POSIX")
dateFormatter.dateFormat = "yyyy/MM/dd"
let startDateFormatted = dateFormatter.date(from: startDateStr)
let difference = Calendar.current.dateComponents([.year, .month, .day], from: startDateFormatted!, to: Date())
print(difference)
let startMon = 05
let startMday = 26
let startYear = 2016
let startComponents = DateComponents(year: startYear, month: startMon, day: startMday)
let nowComponents = Calendar.current.dateComponents([.year, .month, .day], from: Date())
let difference = Calendar.current.dateComponents([.year, .month, .day], from: startComponents, to: nowComponents)
print(difference)