2013-02-24 64 views
1

在我的应用程序中,我得到一个NSString,日期为01-22-12(MM-dd-yy)。现在我想将该字符串转换为NSDate。我使用下面的代码。但它是给日期为2012-01-04 05:00:00 +0000将MM-dd-yy格式的NSString转换为NSDate

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MM-dd-yy"]; 
NSDate *dateFromString = [dateFormatter dateFromString:self.selectedWeek]; 

什么是将我的字符串转换为NSDate的正确方法?

+0

您的问题不清楚。你想要什么? – Ares 2013-02-24 06:24:38

+0

需要具有相同格式的nsdate值。 – 2013-02-24 06:26:37

回答

0

可以使用descriptionWithCalendarFormat:timeZone:locale:

NSString * mydate = [dateFromString descriptionWithCalendarFormat:@"%Y-%m-%d" 
           timezone:nil 
            locale:nil]; 
+0

但我需要在NSdate对象中的值。 – 2013-02-24 14:09:37

+0

dateFromString是你的转换日期,所以这将返回你的NSDate对象 – 2013-02-24 15:04:12

+0

但你分配给nsstring。 – 2013-02-24 18:23:51

1

从你原来的问题,我不完全清楚是否要:

1的字符串作为NSDate

2能够得到原来的日期NSString背出一个NSDate实例。

你的代码基本上是正确的。我只是跑的它稍微改编版本,这似乎很好地工作:

NSString *dateString = @"01-22-12"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MM-dd-yy"]; 
NSDate *date = [dateFormatter dateFromString:dateString]; 
NSString *outString = [dateFormatter stringFromDate:date]; 

NSLog(@"%@",date); 
NSLog(@"%@",outString); 

这产生:

2013-02-24 09:57:24.352 datesAgain.m.out[787:707] 2012-01-22 00:00:00 +0000 
2013-02-24 09:57:24.352 datesAgain.m.out[787:707] 01-22-12 

所以,无论哪种方式,结果似乎是你所期待的。我怀疑你得到一个不正确的值的原因是self.selectedWeek没有你认为它的价值。我会检查它,无论是在调试器或NSLog。如果您使用其他格式字符串在其他地方创建它,请注意它们可能会非常棘手,并且稍微不直观 - 例如s表示秒,但S表示秒的小数部分。 可用的文档here - 最新的Unicode格式标准here(ios6.0/OSX 10.8) - 也链接到以前的链接,因为所有以前的相关标准

+0

我也需要日期值outstring格式意味着01-22-12.And我想发送该值作为method.Iam参数使用该值编写查询从数据库获取值使用该日期。其中一个列数据类型是Date.I想要将此值传递给该字段。 – 2013-02-24 14:59:03

+0

O.K.所以答案是2.你需要弄清楚数据库需要什么格式的日期,产生一个格式的字符串并插入到查询中。 '01-22-12'对你的数据库是否正确?如果是这样,上面的代码应该工作 - 你可以插入'outString'。如果没有,你可以创建第二个'NSDateFormatter',并使用链接到上面的资源以正确的格式生成日期字符串,将其设置为格式字符串,并生成数据库将接受的字符串 – 2013-02-24 20:38:42

+0

是的,我需要日期在01-22-12格式only.So如何插入那outstring。 – 2013-02-25 02:16:13