将日期从mysql转换为NSDate

时间:2012-08-09 19:13:27

标签: ios nsdate

我在mysql中有一个包含日期的varchar。我一直试图将它转换成NSDate,但我尝试过的任何东西都没有用。来自mysql的NSString如下所示:

2012年8月11日,上午10:17

到目前为止,与NSStringNSDate次转化相关的所有帖子都尚未用于此字符串。如果有人可以帮忙......

2 个答案:

答案 0 :(得分:2)

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

必须使用NSJSONSerialization

等框架序列化

NOTE: myJSONObject

使用一些详细的问题链接进行编辑

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

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

 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);

答案 1 :(得分:2)

要将NSString转换为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使用默认值。如果您设置了当前时区,您将在转换后获得正确的日期。