我想在NSDate中使用string

时间:2011-12-28 11:34:08

标签: iphone objective-c ios

我在

字符串中有一个日期
NSString Date = "Dec 21 2011";

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

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

NSLog("%@",fromDate);

我收到此日志

2010-12-18 19:00:00 +0000

任何人都可以解释我如何才能得到正确的约会。

2 个答案:

答案 0 :(得分:5)

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

[dateFormatterTest setDateFormat:@"MMM dd yyyy"];

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

2011-12-21 00:00:00 +0000

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

  • 在声明字符串时添加星号(*):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);

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

答案 1 :(得分:2)

根据您的上一条评论:您必须设置时区。

例如:

NSString *date = @"Dec 21 2011";
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];

NSDateFormatter *dateFormatterTest = [NSDateFormatter new];
[dateFormatterTest  setTimeZone:gmt];
[dateFormatterTest setDateFormat:@"MMM dd yyyy"];
NSDate *fromDate = [dateFormatterTest dateFromString:date];

NSLog(@"%@",fromDate);