2012-08-09 77 views
1

我有一个包含日期的mysql中的varchar。我一直试图将其转换为NSDate,但没有任何我已经尝试过的作品。从MySQL NSString看起来是这样的:将转换日期从MySQL到NSDate

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

到目前为止有关NSStringNSDate转换的所有职位都没有制定该字符串。如果有人可以请帮助...

回答

2

我假设你使用JSON用于从MySQL(服务器)中获取数据并调用myJSONObject

JSON对象

NOTE:myJSONObject必须使用一些框架序列化像NSJSONSerialization

编辑与一些详细的问题链接

你问到的数据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); 
+0

感谢您的回复。我解析json类似于你发布的方式。然而,我放入代码并仍然得到null。这可能是dateformat是错误的 - 再次,2012年8月3日星期五,上午11:20 - 是需要转换的。 – 2012-08-09 21:52:54

+0

@DanielShaffer请参阅我的编辑 – ilhnctn 2012-08-10 07:38:03

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。如果您设置当前时区,转换后您将获得正确的日期。

+0

,但他想要8月不是08例如 – ilhnctn 2012-08-10 08:07:16

+0

他写道_input_字符串是'2012年8月11日,上午10点17分',他喜欢转换成'NSDate'作为_output_。我误解了什么? – holex 2012-08-10 08:10:34

+0

你的输出会给08年,2012年,但他希望2012年8月。不重要的一点,但必须有一些枚举。我的答案解释了一点点 – ilhnctn 2012-08-10 08:56:11