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



我有一个字符串,如下所示

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

最新更新