【发布时间】:2015-08-16 13:33:57
【问题描述】:
您好,我正在尝试查找某个日期与当前本地时间之间的时间间隔。
var a = eventDate.timeIntervalSinceNow
println(a)
//1404567.32182503 - output
当我尝试这样做时,我得到了如上所述的输出。如何将其更改为可读日期?
我想计算剩余的天数、小时数、分钟数。我不想要年、月、秒。
必须:我想要事件日期和本地时间之间的时间间隔。不是UTC时间。
这里是完整的代码:
//eventDate is 2015-09-01 19:39
var date = NSDate();
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "YYY-MM-dd HH:mm:ss ZZZZ"
dateFormatter.timeZone = NSTimeZone()
var localDateString = dateFormatter.stringFromDate(date)
var localDate: NSDate = dateFormatter.dateFromString(localDateString)!
var components = NSCalendar.currentCalendar().components(.CalendarUnitSecond |
.CalendarUnitMinute | .CalendarUnitHour | .CalendarUnitDay |
.CalendarUnitMonth | .CalendarUnitYear, fromDate: localDate,
toDate: self.eventDate, options: nil)
println("\(components.day) days \(components.hour) hours \(components.minute) minutes")
16 days 5 hours 41 minutes //Origianl output
16 days 0 hours 11 minutes // Expected output
我认为由于 UTC 时间的变化而面临这个问题!
【问题讨论】:
-
提示:使用 NSCalendar 和 NSDateComponents。 SO和互联网上应该有一些例子。
-
试过了。但是得到不正确的值,因为如果我给出本地时间,无论如何它都需要 UTC 时间!
-
显示您的尝试,连同您的输入数据、实际结果和预期结果。
-
@MartinR 请看已编辑的问题
-
dateFormat字符串不正确。请显示原始日期字符串的示例。至少,我会使用yyyy而不是YYY。
标签: ios swift nstimeinterval nstimezone