Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将基于日期的NSString转换为NSDateComponents_Objective C_Cocoa_Nsdate_Nsdateformatter_Nsdatecomponents - Fatal编程技术网

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
。这不会保留原始日期的时区。时区存储在
[组件时区]
中,有什么问题吗?它与输入字符串的时区不同。