【发布时间】:2017-03-03 16:13:01
【问题描述】:
我有这段代码
NSDateComponents *comps = [[NSCalendar currentCalendar] components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:sender.date];
[comps setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
NSDate *converted = [[NSCalendar currentCalendar] dateFromComponents:comps];
Sender.date可以像输出到控制台一样
1963-02-23 12:00:00 am +0000
但是 UTC 的 comps.day 给了我 22。我预计会是 23,因为 UTC 中的发件人值显然包含等于 23 的天分量。
这和上午 12 点有什么关系吗?我在这里想念什么?
谢谢!
【问题讨论】:
-
它是
22,因为它以您自己的时区显示给您,而字符串显示的是 GMT/UTC/Zulu 中的日期。 -
考虑使用简单的
NSDate *converted = [[NSCalendar currentCalendar] startOfDayForDate:sender.date]; -
@Rob 但我已经为 DateComponents 对象设置了 UTC。所以我希望它输出到日志的 UTC 值。
-
@vadian - 不,会有同样的问题。他需要设置他用于
dateFromComponents的NSCalendar的timeZone。 -
@ViktorKucera - 这不是组件的时区。这是您在提取重要组件时使用的日历的时区。
标签: ios nsdatecomponents