1

在我的应用程序中,我得到一个日期为 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 的正确方法是什么?

4

2 回答 2

1

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

1 字符串作为NSDate.

或者

2 能够NSStringNSDate实例中取回原始日期。

您的代码基本上是正确的。我只是运行了一个稍微改编的版本,它似乎工作正常:

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) - 也链接到上一个链接,所有以前的相关标准也是如此

于 2013-02-24T10:13:15.810 回答
0

您可以使用descriptionWithCalendarFormat:timeZone:locale:

NSString * mydate =  [dateFromString descriptionWithCalendarFormat:@"%Y-%m-%d"
                                timezone:nil
                                  locale:nil];
于 2013-02-24T06:57:23.657 回答