我想在NSDate中使用string

Sha*_*lam -2 iphone objective-c ios

我在字符串中有一个日期

NSString Date = "Dec 21 2011";
Run Code Online (Sandbox Code Playgroud)

我想将该字符串转换为日期,因为我的日期具有特殊格式,所以我正在利用这样:

`NSDateFormatter *dateFormatterTest = [NSDateFormatter new];
[dateFormatterTest setDateFormat:@"MMM dd YYYY"];
 fromDate = [dateFormatterTest dateFromString:Date];

NSLog("%@",fromDate);
Run Code Online (Sandbox Code Playgroud)

我收到这个日志

2010-12-18 19:00:00 +0000
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释我怎样才能得到正确的约会.

Ale*_*lan 5

您需要yyyy在日期格式中使用小写:

[dateFormatterTest setDateFormat:@"MMM dd yyyy"];
Run Code Online (Sandbox Code Playgroud)

这种新日期格式的输出是这样的:

2011-12-21 00:00:00 +0000
Run Code Online (Sandbox Code Playgroud)

除此之外(主要问题),您需要修复以下内容:

  • 在声明字符串时添加星号(*): NSString *date
  • 在字符串的前面添加一个@,使其成为一个obj-c字符串 @"Dec 21 2011"
  • 声明fromDate(你永远不会声明) - NSDate *fromDate =......
  • 在NSLog的前面添加@ - NSLog(@"%@",fromDate);

您的代码现在应该如下所示:

NSString *date = @"Dec 21 2011";
NSDateFormatter *dateFormatterTest = [NSDateFormatter new];
[dateFormatterTest setDateFormat:@"MMM dd yyyy"];
NSDate *fromDate = [dateFormatterTest dateFromString:date];

NSLog(@"%@",fromDate);
Run Code Online (Sandbox Code Playgroud)

注意我已经重命名Date为小写,因为通常以这样的方式命名实例,因为它避免了它们与类混淆.