NSDate组件的字符串版本始终在swift中打印最后一个日期

时间:2015-04-01 14:38:28

标签: ios objective-c swift nsdate

我在swift中面临这个特殊问题,从组件创建的NSDate始终打印最后一个日期而不是当前日期。

// so i wanted to get the only date without the time parts
let today = NSDate()
println(today) // "2015-04-01 14:29:05 +0000"
let calendar = NSCalendar.currentCalendar()
let comp = calendar.components(.CalendarUnitDay | .CalendarUnitMonth | .CalendarUnitYear , fromDate: today)
let justToday = calendar.dateFromComponents(comp)

println(justToday!) // "2015-03-31 18:30:00 +0000" (last day)

即使将其分配给字符串变量

let strDay = "\(justToday)" // "2015-03-31 18:30:00 +0000" (last day)

从更快的操场上查看下图,以便更清晰。 enter image description here

但如果我单独打印组件,它会得到正确的值

let monthFormmater = NSDateFormatter()
monthFormmater.dateFormat = "MM"

let thisMonthNo = monthFormmater.stringFromDate(justToday!).toInt()! // 4 not 3 as expected

这完全是奇怪的。有人知道会发生什么事吗?

还有一件奇怪的事。如果我使用格式化程序将字符串转换为日期,则会发生这种情况。

let monthFormmater = NSDateFormatter()
monthFormmater.dateFormat = "YYYY-MM-dd"

let day = monthFormmater.dateFromString("2015-04-02") // "Apr 2, 2015, 12:00 AM"
println(day) // 2015-04-01 18:30:00 +0000 (last day)

0 个答案:

没有答案