2

我知道这是一个重复的问题,但是在 stackoverflow 和 google 上搜索了许多类似的问题之后,没有一个解决方案对我有用。

我正在尝试将从数据库接收到的日期转换为字符串格式以显示在 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
4

5 回答 5

5

beginDate 的类型是什么?如果是NSString,则先转换为NSDate,使用dateFromStringNSDateFormatter的方法。

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];
于 2012-05-23T03:50:28.813 回答
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 小时制,并且不需要上午/下午。)

于 2012-05-23T04:15:26.137 回答
2

上面的代码没有错,它适用于当前日期。只需更换

NSString *dateString = [dateFormat stringFromDate:beginDate];

经过

NSString *dateString = [dateFormat stringFromDate:[NSDate date]];

并将工作。

看来你的beginDate.

于 2012-05-23T03:35:41.207 回答
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”就可以了

于 2013-09-29T07:00:24.943 回答
0

您需要先打电话setDateFormat再打电话stringFromDate

NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm dd/MM/yyyy"];
NSString * dateString =[dateFormatter stringFromDate:someDate];
于 2018-12-12T21:19:35.827 回答