我有一个像下面这样的字符串
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
答案 0 :(得分:1)
NSDate不存储时区,NSDate只是表示日期的数字。当你在屏幕上打印它时,它的格式就是这样,但你的日期和那个是相同的。
此:
2013-12-28 05:15:00 +0000
和此:
2013-12-28T8:15:00+03:00
代表相同的日期,只是以不同的方式打印。
执行此操作时:NSLog(@"Formatted date %@",dateInboundSegment);
您没有指定如何将日期格式化为字符串,因此它使用的是默认模式。
如果要使用适当的时区打印NSDate,则需要使用格式化程序创建一个字符串并设置时区。
答案 1 :(得分:0)
您正在打印NSDate
值,而不是格式化的字符串。 NSDate
不保留任何格式,并使用默认格式打印。
要以所需格式打印字符串,您必须致电:
[dateFormatterInBoundSegment stringFromDate:myDate];