NSDate/NSDateFormatter
等似乎为常见任务占用了太多代码。
对于像JavaScript DateJS这样的iOS开发,还有更好的东西吗?
以下是常见NSDate用法的一些示例,其中规范解决方案可能至少两倍:
答案 0 :(得分:7)
我认为原生处理日期的方法不是更好。然而,你可以做的是在NSDate上创建一些类别,以便更容易处理日期,如果你发现自己经常重复相同的代码行,这将特别有用。
编辑:以下是一些示例:
答案 1 :(得分:1)
NSDate效率很高,效率很高,特别是与NSDateFormatter和NSCalendar结合使用时,虽然你可以说后面的类很臃肿而且“慢”,但它们非常深。
你有什么具体的抱怨?
答案 2 :(得分:1)
关于使用类别提取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
使用类别:
NSDate *theDate = [NSDate date]; // use the current date ...
dateComponents components = [NSDate componentsFromDate:theDate];
NSLog(@"%i - %i - %i", components.year, components.month, components.day);
我相信也可以使用指针间接来实现类似的结果,但不需要结构 - 它取决于任何人认为是“最干净”的解决方案。