我知道这是一个重复的问题,但在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
请帮忙。
提前致谢。
答案 0 :(得分:5)
beginDate的类型是什么?如果是NSString,则首先使用NSDateFormatter的dateFromString
方法将其转换为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];
答案 1 :(得分:5)
首先需要将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小时时间,并且不需要上午/下午。)
答案 2 :(得分:2)
上面的代码没有错,它适用于当前日期。只需替换
NSString *dateString = [dateFormat stringFromDate:beginDate];
通过
NSString *dateString = [dateFormat stringFromDate:[NSDate date]];
并且会起作用。
您的beginDate
似乎存在问题。
答案 3 :(得分:0)
可能是你的beginDate的格式就像“2013-09-29 14:57:48.0”,但是dataFormate是
[dFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]
更改为“yyyy-MM-dd HH:mm:ss.0”就可以了
答案 4 :(得分:0)
您需要先致电setDateFormat
,然后再致电stringFromDate
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm dd/MM/yyyy"];
NSString * dateString =[dateFormatter stringFromDate:someDate];