“DateWithFormat”适用于终端,但不适用于iOS?

时间:2013-05-18 05:19:47

标签: ios objective-c nsdate

我有一些代码可以使用日期进行操作。为了看它是否可行,我为OSX控制台编写了一个非常简单的程序。它工作正常!但是,我想开始创建一个应用程序,所以我在基于视图的应用程序中的函数中使用了相同的代码。但是,我不断收到错误消息:“没有已知的类方法dateWithFormat。” 任何帮助将不胜感激!

-(id)calc:(int)m with:(int)d andWith:(int)y {


 NSDateFormatter *formatter = [NSDateFormatter new];
    NSDate *date1 =[formatter setDateFormat:[NSString stringWithFormat:@"%i-%i-%i 00:00:00 +0000",m,d,y]];
    NSDate *date2 = [NSDate date];
    NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1];
    int numberOfDays = secondsBetween/86400;
 }

1 个答案:

答案 0 :(得分:3)

首先:在您的代码段中,您不使用+dateWithFormat: (NSDate),而是使用+dateWithString: (NSDate)。错字?请重新检查一下。 Mac OS和iOS上不存在+dateWithFormat: (NSDate)

第二:iOS上没有-dateWithString: (NSDate)。这是一种方便的方法。使用date formatter将字符串转换为日期。 (这也是Mac OS上更好的方式。)

第三,更新到您的评论: 你的代码不应该编译:

NSDate *date1 = [NSDate dateWithString:@"%i-%i-%i 00:00:00 +0000",1,2,3];

Too many arguments to method call, expected 1, have 4

可能你想做那样的事情:

NSDate *date1 = [NSDate dateWithString:[NSString stringWithFormat:@"%i-%i-%i 00:00:00 +0000",1,2,3]];

如果您想在日期的组件上创建具有特定值的日期,请查看NSDatComponents