1

我在 mysql 中有一个保存日期的 varchar。我一直在尝试将其转换为NSDate,但我没有尝试过任何工作。从NSStringmysql 看起来像这样:

2012 年 8 月 11 日上午 10:17

到目前为止,与转换相关的所有帖子NSString都不NSDate适用于此字符串。如果有人可以请帮助...

4

2 回答 2

2

我假设您使用 JSON 从 MySQL(服务器)获取数据并有一个名为 myJSONObject 的 JSON 对象

NOTE: myJSONObject必须使用诸如NSJSONSerialization 之类的框架进行序列化

编辑一些详细的问题链接

您已要求将数据转换为2012 年 8 月 11 日上午 10:17,但我的示例代码尝试转换为2012-08-11 10:17:..,我为您编辑了示例代码。有关更多信息,请查看NSDateFormatter

请注意:month_from_date您可以使用NSDateComponents获取变量。这里这里有一些关于它的问题.. 如果你不能,请打开一个新帖子。

 NSString* dateString = [myJSONObject objectForKey:@"date"];

            NSDateFormatter* fmt = [NSDateFormatter new];
            [fmt setTimeZone:[NSTimeZone defaultTimeZone]]; 
           // [fmt setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
           [fmt setDateFormat:@"%@ DD,YYYY, HH:mm",month_from_date]; 
           NSDate* dateFromString = [fmt dateFromString:dateString];
NSLog("Here is date from string: %@",dateFromString);
于 2012-08-09T19:20:48.737 回答
2

要将 a 转换NSString为 a NSDate,请使用NSDateFormatter.

NSString *_dateString = @"August 11, 2012, 10:17 AM";
NSDateFormatter *_dateFormatter = [[NSDateFormatter alloc] init];
[_dateFormatter setDateFormat:@"MMMM dd, yyyy, HH:mm a"];
NSDate *_date = [_dateFormatter dateFromString:_dateString];
NSLog(@"raw date : %@", _date);
NSLog(@"formatted date : %@", [_dateFormatter stringFromDate:_date]);

输出NSDate将包含日期:

raw date : 2012-08-10 23:17:00 +0000
formatted date : August 11, 2012, 11:17 AM

您可以根据需要对不同的输出进行格式化NSDate,它是目前为止,但您可以使用NSDate包含日期的对象。

注意:我们在转换时不知道输入日期的时区,因此NSDate使用它的默认值。如果您设置当前时区,您将在转换后获得正确的日期。

于 2012-08-10T08:04:26.603 回答