NSDate/NSDateFormatter
等人似乎对于常见任务需要太多的代码行。NSDate - 有什么更好的?
对于iOS的开发,有没有更好的东西,比如DateJS for JavaScript?
这里有公共的NSDate用法,其中典型的解决方案可能是如至少两次小的一些例子:
- 从整数创建的NSDate。解决方案:SO Answer 1
- 从NSDate获取年/月/日。解决方案:SO Answer 2
- SO上有更多这些常见的情况。
NSDate/NSDateFormatter
等人似乎对于常见任务需要太多的代码行。NSDate - 有什么更好的?
对于iOS的开发,有没有更好的东西,比如DateJS for JavaScript?
这里有公共的NSDate用法,其中典型的解决方案可能是如至少两次小的一些例子:
我不认为有更好的方式本地处理日期。但是你可以做的是在NSDate上创建几个类别,以便更容易地处理日期,如果你发现自己经常重复相同的代码行,这是特别有用的。
编辑:这里有几个例子:
NSDate的是高效,高生产力,特别是在与NSDateFormatter和NSCalendar结合起来,虽然你可以认为后者班级非常臃肿,“慢”,他们非常深。
你有什么具体的投诉?
首先,您有权要求提供具体的投诉,我已经添加了一个链接来尝试和说明。
其次,我没有看到相对于其他语言的日期类,NSDate如何被认为是高效的。您是否将生产力与Java/C#/ Javascript进行了比较?不是在谈论原始性能,而是在说你的生产力。 –
Lee
与JavaScript相比,NSDate更好。没有Java或C#的经验,所以不能评论。但是NSDate(以及相关的API)非常有用和高效。可能有点神秘但理解力强。 –
我指的是使用DateJS的JavaScript日期处理,它实际上使日期变得愉快。是的,它是一个插件/帮手,但这就是我的观点,为什么不在ObjC中有这样的帮手,这样每个人都不必创建自己的类别?猜想那里的解决方案需要更多的动力/采用才能成为事实上的使用。 – Lee
至于使用类别提取的NSDate的年/月/日,一个例子:
的NSDate + ComponentsExtractor.h:
#import <Foundation/Foundation.h>
typedef struct
{
NSInteger year;
NSInteger month;
NSInteger day;
} dateComponents;
@interface NSDate (ComponentsExtractor)
+ (dateComponents)componentsFromDate:(NSDate *)theDate;
@end
的NSDate + ComponentsExtractor.m:
#import "NSDate+ComponentsExtractor.h"
@implementation NSDate (ComponentsExtractor)
+ (dateComponents)componentsFromDate:(NSDate *)theDate
{
NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *components = [gregorian components:unitFlags fromDate:theDate];
dateComponents theComponents;
theComponents.year = [components year];
theComponents.month = [components month];
theComponents.day = [components day];
return theComponents;
}
@end
利用的CA tegory:
NSDate *theDate = [NSDate date]; // use the current date ...
dateComponents components = [NSDate componentsFromDate:theDate];
NSLog(@"%i - %i - %i", components.year, components.month, components.day);
我相信间接指针可以作为很好地实现类似的结果,但不需要一个结构 - 这取决于任何一个作为“干净”的解决方案方面。
你能给我们更多具体的投诉吗?否则,除了陈词滥调之外,很难提供任何东西。 – Tommy
那是多少代码?你想做什么 ? – Legolas
增加了两个典型解决方案的例子。 “太多的代码行”已被澄清,意味着它可以容易地是一半或更少的字符。 – Lee