我按时区转换日期,我还有一个要求是日期格式。现在我在12/15/14,早上5:00格式获得日期,但我希望它在“2014年11月18日下午5:15”格式。事件我没有按照我的日期格式得到正确的输出。 这在“目标C”中是否可行。我的代码是:
-(NSString *)dateFormater : (NSString *)dateStr
{
//NSString *dateStr = @"2014-11-30T21:25:00+00:00";
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssz"];
// [dateFormatter1 setDateFormat:@"dd MMM,yyyy'T'HH:mm:ssz"];
NSDate *date = [dateFormatter1 dateFromString:dateStr];
NSLog(@"date : %@",date);
NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
NSTimeZone *utcTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:date];
NSInteger gmtOffset = [utcTimeZone secondsFromGMTForDate:date];
NSTimeInterval gmtInterval = currentGMTOffset - gmtOffset;
NSDate *destinationDate = [[NSDate alloc] initWithTimeInterval:gmtInterval sinceDate:date];
NSDateFormatter *dateFormatters = [[NSDateFormatter alloc] init];
// [dateFormatters setDateFormat:@"dd-MMM-yyyy hh:mm"];
[dateFormatters setDateFormat:@"dd MMM, yyyy hh:mm a"];
[dateFormatters setDateStyle:NSDateFormatterShortStyle];
[dateFormatters setTimeStyle:NSDateFormatterShortStyle];
[dateFormatters setDoesRelativeDateFormatting:YES];
[dateFormatters setTimeZone:[NSTimeZone systemTimeZone]];
dateStr = [dateFormatters stringFromDate: destinationDate];
NSLog(@"DateString : %@", dateStr);
return dateStr;
}
答案 0 :(得分:2)
您格式化字符串dd MMM, yyyy hh:mm a
是正确的,但在设置格式字符串后,您将再次更改它。
删除这些行:
[dateFormatters setDateStyle:NSDateFormatterShortStyle];
[dateFormatters setTimeStyle:NSDateFormatterShortStyle];
但总的来说,我不会使用静态格式字符串,至少在全世界发布应用程序时不会。由于大多数国家/地区都有不同的本地化用于演示目的,因此您最好使用:
dateStr = [NSDateFormatter localizedStringFromDate:date dateStyle:NSDateFormatterMediumStyle timeStyle:NSDateFormatterShortStyle];