NSDateFormatter:将“5/13/2012 6:05 am”(美国,美国东部时间)转换为“13/05/2012 12:05”(IT,GMT + 1)

时间:2013-05-13 10:30:30

标签: objective-c nsdateformatter

我正从服务器检索时间值。格式为:

“5/13/2012 6:05 am”

字符串中未指定,但我知道它是“EDT”。

我需要:

1)摆脱上午/下午的事情。

2)将其从EDT(或其他时区)转换为当地GMT +/- x时间。

对于我的timeZone(意大利,GMT + 1),它应该成为:

“13/05/2012 12:05”

如何使用NSDateFormatter执行此操作?

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale: [NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm"];

...

由于

尼古拉

1 个答案:

答案 0 :(得分:1)

首先,将NSDateFormatters dateFormat设置为源格式。在你的情况下:

[dateFormatter setDateFormat:@"M/d/yyyy h:mma"];
NSDate *myDate = [dateFormatter dateFromString:@"5/13/2012 6:05am"];

这将创建一个新的NSDate实例。现在,您将formatters dateFormat设置为目标格式:

[dateFormatter setDateFormat:@"dd/MM/yyyy hh:mm"];
NSString *myString = [dateFormatter stringFromDate:myDate];

您还可以使用两个日期格式化程序,一个用于将您的字符串转换为NSDate实例,另一个用于将其转换回更正的NSString。

有关更多信息以及当前格式规范的完整列表,请参阅unicode referenceApple Docs