无法使用GMT为Nsdate转换字符串日期

时间:2013-12-18 11:23:08

标签: ios nsdate nsdateformatter nstimezone nslocale

我有一个像下面这样的字符串

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

2 个答案:

答案 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];