我见过以下代码的许多版本,以便从NSDate中删除时间元素。剥离NSDate的时间
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *now = [NSDate date];
unsigned int intFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *components = [cal components:intFlags fromDate:now];
NSDate *today = [cal dateFromComponents:components];
问题是它不按预期方式工作。我目前在英国夏令时(BST)。如果我现在运行这段代码,现在= @ “2012-07-07 19点24分06秒+0000”
今天= @ “2012-07-06 23:00:00 +0000”
什么我想看到的是今天= @“2012-07-07 00:00:00 +0000”
我只能猜测它与夏令时有关。有任何想法吗?
这没有窍门,谢谢。尽管如此,我必须承认,这看起来确实违背了直觉上面的“现在”日期是在BST中......在我的原始代码中,正如你所说,正在返回的是GMT时间。将组件时区设置为GMT似乎很奇怪。这是否可以在任何时区使用 - 例如:如果现在是在美国东部时间? – 2012-07-08 21:55:01
对不起,刚才注意到上面的“现在”日期确实在GMT。 – 2012-07-08 22:59:49