这个问题是从前一个问题开始的......
How do I create the current date (or any date) as an NSDate without hours, minutes and seconds?
我会使用以下代码...
NSDate *todaysDate = [General makeAbsoluteNSDate:[NSDate date]];
我的问题是我有不同国家/地区的用户,UTC不是他们的时区,而且该功能在一天中的某些时间生成的日期不正确。
如何获取当前时区以更正我的功能? 或者我应该使用不同的方法吗?
继承我一直在使用的功能......
+ (NSDate *)makeAbsoluteNSDate:(NSDate*)datSource {
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:
NSGregorianCalendar];
[calendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
NSDateComponents *dateComponents = [calendar components:NSYearCalendarUnit |
NSMonthCalendarUnit | NSDayCalendarUnit
fromDate:datSource];
[dateComponents setHour:0];
[dateComponents setMinute:0];
[dateComponents setSecond:0];
NSDate *midnightUTC = [calendar dateFromComponents:dateComponents];
[calendar release];
return midnightUTC;
}
答案 0 :(得分:0)
您可以通过此调用获取时区对象:
[NSTimeZone localTimeZone]
您可以使用 secondsFromGMT 方法找出差异,并使用时区创建日期。
您甚至可以为NSDate构建一个类别,其中包括将日期转换为当前时区日期的方法,这会更简单。