使用UTC-5时区格式化器将NSString转换为NSDate

时间:2014-11-13 16:12:16

标签: ios nsdate nsdateformatter nstimezone

我有NSDateFormatter

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[formatter setDateFormat:@"dd/MM/yyyy HH:mm:ss zzz"];

我有这个NSString:

NSString *geolocaliser=@"09/11/2014 03:03:20 UTC+1";

我希望将其转换为NSDate对象:

NSDate *lastLocatedUserDate =[formatter dateFromString:geolocaliser];

此处的输出非常完美:lastLocatedUserDate=2014-11-09 02:03:20 +0000

现在,如果我有这个NSString:

NSString *geolocaliser=@"11/11/2014 12:07:40 UTC−5" ;

我得到一个空值:lastLocatedUserDate=(null)

我认为问题是因为UTC-5,但它与UTC+1不一样?

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

事实证明这是一个非常不明显的问题。

您的字符串@"11/11/2014 12:07:40 UTC−5"中包含无效字符。时区中明显的短划线实际上是Unicode字符" MINUS SIGN" (U + 2212)而不是普通的老式" HYPHEN-MINUS" (U + 002D)。

替换为-,您的代码将正常运行。