Objective c 将MM-dd-yy格式的NSString转换为NSDate

Objective c 将MM-dd-yy格式的NSString转换为NSDate,objective-c,nsdate,nsdateformatter,Objective C,Nsdate,Nsdateformatter,在我的应用程序中,我得到一个日期为01-22-12(MM-dd-yy)的NSString。现在我想将该字符串转换为NSDate。我使用了下面的代码。但它给出的日期是2012-01-04 05:00:00+0000 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"MM-dd-yy"]; NSDate *dateFromString = [dateForma

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

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM-dd-yy"];
NSDate *dateFromString = [dateFormatter dateFromString:self.selectedWeek];
将我的字符串转换为NSDate的正确方法是什么?

您可以使用

你可以用


从你最初的问题来看,我不完全清楚你是否想要:

1将字符串设置为
NSDate

2能够从
NSDate
实例中获取原始日期
NSString

你的代码基本上是正确的。我刚刚运行了一个稍微修改过的版本,它似乎运行得很好:

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
表示秒的分数。
可用文档-最新的Unicode格式标准(ios6.0/OSX 10.8)-在上一个链接中也链接到了,正如您最初的问题中所有以前的相关标准一样,我不完全清楚您是否想要:

1将字符串设置为
NSDate

2能够从
NSDate
实例中获取原始日期
NSString

你的代码基本上是正确的。我刚刚运行了一个稍微修改过的版本,它似乎运行得很好:

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
表示秒的分数。

可用文档-最新的Unicode格式标准(ios6.0/OSX 10.8)-在上一个链接中也链接到,正如所有以前的相关标准一样

您的问题不清楚。您到底想要什么?需要相同格式的nsdate值。您的问题不清楚。您到底想要什么?需要具有相同格式的nsdate值。但我需要nsdate对象中的该值。dateFromString是您的转换日期,因此这将返回您的nsdate对象但u分配给nsstring。但我需要nsdate对象中的该值。dateFromString是您的转换日期,因此这将返回您的nsdate对象但u分配给nsdate对象到nsstring。我还需要日期值,格式为01-22-12。我想将该值作为方法的参数发送。我使用该值编写查询,以便使用该日期从数据库中获取值。列数据类型之一是date。我想将该值传递到该字段。好的。所以答案是2。您需要计算出db对日期所需的格式,生成该格式的字符串并将其插入查询中。“01-22-12”是否适用于您的数据库?如果是这样的话,上面的代码应该可以工作-您可以只插入
突出部分
。如果没有,您可以创建第二个
NSDateFormatter
,并使用上面链接的资源以正确的格式生成日期字符串,将其设置为格式字符串,并生成db将接受的字符串Yes,我只需要01-22-12格式的日期。因此,我如何插入突出部分。使用
-stringWithFormat:…
-e.g
[nsstringWithFormat:@“从表中选择列,其中date=%@”,dateString]。如果db需要C字符串,则在此基础上使用
-utf8String
。您还可以使用
%@
将列名和表名作为变量插入,但请注意,这可能会导致SQL注入攻击,具体取决于应用程序中函数的使用方式。如果您使用的是
sqlite
C API,则有一些用于组合C字符串查询的特殊函数-这里的文档我还需要日期值,格式为01-22-12。我希望将该值作为方法的参数发送。我使用该值编写查询,以便使用该日期从数据库获取值。列之一数据类型是Date。我想把这个值传递给那个字段。好的。所以答案是2。您需要计算出db对日期所需的格式,生成该格式的字符串并将其插入查询中。“01-22-12”是否适用于您的数据库?如果是这样的话,上面的代码应该可以工作-您可以只插入
突出部分
。如果没有,您可以创建第二个
NSDateFormatter
,并使用上面链接的资源以正确的格式生成日期字符串,将其设置为格式字符串,并生成db将接受的字符串Yes,我只需要01-22-12格式的日期。因此,我如何插入突出部分。使用
-stringWithFormat:…
-e.g
[nsstringWithFormat:@“从表中选择列,其中date=%@”,dateString]。如果db需要C字符串,则在此基础上使用
-utf8String
。您还可以使用
%@
将列名和表名作为变量插入,但请注意,这可能会导致SQL注入攻击,具体取决于应用程序中函数的使用方式。如果您使用的是
sqlite
capi,那么这里有一些特殊的函数用于组装C字符串查询-文档