【发布时间】:2014-07-07 10:55:35
【问题描述】:
我正在尝试以这种方式创建 NSDate 对象
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];
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];
当我记录 currentDate 时,我得到了这个
"2014-07-07 06:00:01 +0000"
如果我把这个保存到 plist 我得到这个
07-Jul-2014 11:30:01 am
如果我使用“UTC”作为时区
我明白了
"2014-07-07 00:00:01 +0000"
在 plist 中显示为
07-Jul-2014 5:30:01 am
我不明白发生了什么,有人可以帮我解决这个问题
我想知道,如果我不设置任何 timeZone 将使用什么 timeZone?
我们是否需要明确地将 UTC 设置为 timeZone 或者我们需要使用 systemTimeZone。
【问题讨论】:
-
你想要的时区取决于你想要的时区。日期/时间代表什么?
-
对不起,我没有问你问题,你需要什么信息?
-
“保存到 plist”是什么意思?你是怎么保存的?
-
我将 NSdates 存储在一个数组中,并将该数组存储在一个 plist 中
-
我的意思是要使用的时区取决于您希望日期/时间表示的内容。如果您想要一个可以在全球范围内使用的日期/时间,而不管用户自己的时区如何,那么您需要 UTC。如果您只关心本地时区,请使用它。
标签: ios nsdate nstimezone