0

我有一个类似下面例子的字符串

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
4

2 回答 2

1

NSDate 不存储时区,NSDate 只是一个代表日期的数字。当你在屏幕上打印它时,它只是这样格式化,但你的日期和那个是一样的。

这个:

2013-12-28 05:15:00 +0000

和这个:

2013-12-28T8:15:00+03:00

表示相同的日期,只是以不同的方式打印。

当您这样做时:NSLog(@"Formatted date %@",dateInboundSegment); 您没有指定日期必须如何格式化为字符串,因此它使用默认模式。

如果要使用正确的时区打印 NSDate,则需要使用格式化程序创建一个字符串并设置时区。

于 2013-12-18T11:25:38.683 回答
0

您正在打印NSDate值,而不是格式化的字符串。NSDate不包含任何格式,并且使用默认格式打印。

为了以所需格式打印字符串,您必须调用:

[dateFormatterInBoundSegment stringFromDate:myDate];

于 2013-12-18T11:28:59.727 回答