iOS*_*Dev 2 iphone objective-c nsdate ipad ios
我知道这是一个重复的问题,但在stackoverflow和google上搜索了许多类似的问题后,没有一个解决方案适合我.
我想把从DB收到的日期转换为字符串格式,以便在iPhone应用程序中显示.
我将以下列方式将日期转换为字符串,但[dateFormat stringFromDate:beginDate]始终返回nil.
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"MMM dd hh:mm a"];
    NSString *dateString = [dateFormat stringFromDate:beginDate];
    NSLog(@"date: %@", dateString);
    [dateFormat release];
收到的服务器NSDate具有以下格式:
 2012-05-23 13:06:51.394+1000
我希望它
 May 25 13:06 PM
请帮忙.
提前致谢.
beginDate的类型是什么?如果是NSString,则首先使用dateFromStringNSDateFormatter方法将其转换为NSDate .
EDIT2 :(修正了拼写错误并添加了完整的工作示例)
NSString *beginDate = @"2012-05-23 13:06:51.394+1000";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// Set the format of the dateFormatter to the date format of the server
dateFormatter.dateFormat = @"yyyy-MM-dd HH:MM:ss.SSSZ";
// Convert the NSString to NSDate
NSDate* date = [dateFormatter dateFromString: beginDate];
// Set the format of dateFormatter to your own format
dateFormatter.dateFormat = @"MMM dd hh:mm a";
// Convert NSDate to your own format of date
beginDate = [dateFormatter stringFromDate: date];
您需要先将beginDate字符串转换为实际的NSDate,然后执行以下操作:
NSString *beginDateString  = [arr_data objectAtIndex:1];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSSZ"];
NSDate *beginDate = [formatter dateFromString:beginDateString];
[formatter setDateFormat:@"MMM dd hh:mm a"];
NSString *dateString = [formatter stringFromDate:beginDate];
NSLog(@"date: %@", dateString);
请注意,您在问题中说您希望它输出May 25 13:06 PM但实际上会输出May 25 01:06 PM.(13:06将使用24小时而不是12小时时间,不需要上午/下午.)