我有一个日历应用,我在其中突出显示当前日期
我已按照以下步骤操作,目前我的设备时间是上午11:59,
印度时区,我将其更改为第一个上午9点,然后我将时区更改为圣何塞,
我的时间是6月25日下午9点24分,现在是设备日历,它显示的是6月25日,但是
在我的应用程序中它仍然显示6月26日。
我以这种方式获得当前日期
-(void)initialize
{
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
NSDateComponents *weekdayComponents = [gregorian components:(NSDayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSMinuteCalendarUnit)fromDate:[NSDate date]];
NSInteger day = [weekdayComponents day];
NSInteger month = [weekdayComponents month];
NSInteger year = [weekdayComponents year];
[m_dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
m_dateFormatter.dateFormat = @"dd/MM/yyyy";
NSDateComponents *timeZoneComps=[[NSDateComponents alloc] init];
[timeZoneComps setDay:day];
[timeZoneComps setMonth:month];
[timeZoneComps setYear:year];
[timeZoneComps setHour:00];
[timeZoneComps setMinute:00];
[timeZoneComps setSecond:01];
m_currentDate = [gregorian dateFromComponents:timeZoneComps];
}
所以,在这方面我需要你的帮助。
答案 0 :(得分:0)
我认为[NSTimeZone systemTimeZone]
将始终为您提供设备检测到(或设置)的当前时区。由于时区已缓存在您的应用中,您还可以致电[NSTimeZone resetSystemTimeZone]
以确保信息是最新的。所以,在你的代码中:
[NSTimeZone resetSystemTimeZone];
[m_dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];