Objective c 将基于日期的NSString转换为NSDateComponents
是否可以从基于Objective c 将基于日期的NSString转换为NSDateComponents,objective-c,cocoa,nsdate,nsdateformatter,nsdatecomponents,Objective C,Cocoa,Nsdate,Nsdateformatter,Nsdatecomponents,是否可以从基于NSString的日期解析出日期组件?例如,如果我有一个带有yyyy-MM-dd HH:MM:ss.SSS ZZZ的NSDateFormatter,如何直接从这个字符串获取NSDateComponents对象 具体地说,我想保留时区,并将此NSDateComponents对象与从yyyy-MM-dd格式创建的对象区分开来。不是直接的,而是通过几个步骤: NSDateFormatter *formatter = [NSDateFormatter new]; [formatter se
NSString
的日期解析出日期组件?例如,如果我有一个带有yyyy-MM-dd HH:MM:ss.SSS ZZZ
的NSDateFormatter
,如何直接从这个字符串获取NSDateComponents
对象
具体地说,我想保留时区,并将此
NSDateComponents
对象与从yyyy-MM-dd
格式创建的对象区分开来。不是直接的,而是通过几个步骤:
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS ZZZ"];
NSString *dateString = @"2016-03-15 12:00:00.000 +0800";
NSDate *date = [formatter dateFromString:dateString];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitTimeZone fromDate:date];
NSInteger day = [components day];
NSInteger month = [components month];
NSInteger year = [components year];
NSTimeZone *timeZone = [components timeZone];
使用
NSDateFormatter
从NSString
创建一个NSDate
。然后从NSDate
获取NSDateComponents
。这不会保留原始日期的时区。时区存储在[组件时区]
中,有什么问题吗?它与输入字符串的时区不同。