我有一个字符串,如下所示
2013-12-28T8:15:00+03:00
但我想以相同的格式转换为 NSDate,这是我的代码
NSDateFormatter *dateFormatterInBoundSegment = [[NSDateFormatter alloc] init];
[dateFormatterInBoundSegment setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssz"];
[dateFormatterInBoundSegment setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
NSDate *dateInboundSegment = [dateFormatterInBoundSegment dateFromString:@"2013-12-28T8:15:00+03:00"];
NSLog(@"Formatted date %@",dateInboundSegment);
结果打印成这样
Formatted date 2013-12-28 05:15:00 +0000
我想用GMT +3像字符串一样转换为nsdate,结果应该是这样的
2013-12-28T8:15:00+03:00
NSDate 不存储时区,NSDate 只是一个表示日期的数字。当你在屏幕上打印它时,它只是这样格式化,但你的日期和那个是相同的。
这:
2013-12-28 05:15:00 +0000
而这个:
2013-12-28T8:15:00+03:00
表示相同的日期,只是以不同的方式打印。
执行此操作时: NSLog(@"Formatted date %@",dateInboundSegment);
您没有指定如何将日期格式化为字符串,因此它使用的是默认模式。
如果要使用正确的时区打印NSDate,则需要使用格式化程序创建一个字符串并设置时区。
您正在打印NSDate
值,而不是格式化的字符串。 NSDate
不包含任何格式,并且使用默认格式打印。
为了打印具有所需格式的字符串,您必须调用:
[dateFormatterInBoundSegment stringFromDate:myDate];