使用NSDateFormatter从NSString进行日期格式化

时间:2012-02-05 11:23:16

标签: iphone objective-c ipad nsdate nsdateformatter

我有以下字符串代表日期&时间

NSString *shortDateString = @"Sat28Apr2012 15:00";

(没有空格(除了前面的单个空格),就像它在上面一样)

我想使用以下方式格式化此日期:

NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
// Question is regarding the line below:
[inputFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm"];

NSDate *formatterDate = [inputFormatter dateFromString:shortDateString];

NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[outputFormatter setTimeZone:gmt];
[outputFormatter setDateFormat:@"dd.MMM.yyyy HH:mm Z"];

NSString *newDateString = [outputFormatter stringFromDate:formatterDate];

2 个答案:

答案 0 :(得分:3)

如果您稍微更改字符串以准确匹配输入的格式,则可以正常工作。您需要做的就是从字符串中删除空格和逗号,如下所示:

"EEEdMMMyyyy HH:mm"

使用此字符串,我得到以下结果:

08.Apr.2012 19:00 +0000

它是19:00,而不是15:00,因为我的时区比格林威治标准时间晚四个小时。

答案 1 :(得分:1)

[inputFormatter setDateFormat:@"EEEddMMMyyyy HH:mm"];