Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。

NSDate+Category.h 代码:

#import <Foundation/Foundation.h>

#define D_MINUTE      60
#define D_HOUR 3600
#define D_DAY 86400
#define D_WEEK 604800
#define D_YEAR 31556926 @interface NSDate (Category) - (NSString *)timeIntervalDescription;    //距离当前的时间间隔描述
- (NSString *)minuteDescription;        //精确到分钟的日期描述*/
- (NSString *)formattedTime;
- (NSString *)formattedDateDescription; //格式化日期描述
- (double)timeIntervalSince1970InMilliSecond;
+ (NSDate *)dateWithTimeIntervalInMilliSecondSince1970:(double)timeIntervalInMilliSecond;
+ (NSString *)formattedTimeFromTimeInterval:(long long)time; //从当前日期起的相对日期
+ (NSDate *) dateTomorrow;
+ (NSDate *) dateYesterday;
+ (NSDate *) dateWithDaysFromNow: (NSInteger) days;
+ (NSDate *) dateWithDaysBeforeNow: (NSInteger) days;
+ (NSDate *) dateWithHoursFromNow: (NSInteger) dHours;
+ (NSDate *) dateWithHoursBeforeNow: (NSInteger) dHours;
+ (NSDate *) dateWithMinutesFromNow: (NSInteger) dMinutes;
+ (NSDate *) dateWithMinutesBeforeNow: (NSInteger) dMinutes;
+ (NSString *)weekdayStringValue:(NSDate*)date; //日期比较
- (BOOL) isEqualToDateIgnoringTime: (NSDate *) aDate;
- (BOOL) isToday;
- (BOOL) isTomorrow;
- (BOOL) isYesterday;
- (BOOL) isSameWeekAsDate: (NSDate *) aDate;
- (BOOL) isThisWeek;
- (BOOL) isNextWeek;
- (BOOL) isLastWeek;
- (BOOL) isSameMonthAsDate: (NSDate *) aDate;
- (BOOL) isThisMonth;
- (BOOL) isSameYearAsDate: (NSDate *) aDate;
- (BOOL) isThisYear;
- (BOOL) isNextYear;
- (BOOL) isLastYear;
- (BOOL) isEarlierThanDate: (NSDate *) aDate;
- (BOOL) isLaterThanDate: (NSDate *) aDate;
- (BOOL) isInFuture;
- (BOOL) isInPast; //工作日和休息日
- (BOOL) isTypicallyWorkday;
- (BOOL) isTypicallyWeekend; //日期调整
- (NSDate *) dateByAddingDays: (NSInteger) dDays;
- (NSDate *) dateBySubtractingDays: (NSInteger) dDays;
- (NSDate *) dateByAddingHours: (NSInteger) dHours;
- (NSDate *) dateBySubtractingHours: (NSInteger) dHours;
- (NSDate *) dateByAddingMinutes: (NSInteger) dMinutes;
- (NSDate *) dateBySubtractingMinutes: (NSInteger) dMinutes;
- (NSDate *) dateAtStartOfDay; //检索的时间间隔
- (NSInteger) minutesAfterDate: (NSDate *) aDate;
- (NSInteger) minutesBeforeDate: (NSDate *) aDate;
- (NSInteger) hoursAfterDate: (NSDate *) aDate;
- (NSInteger) hoursBeforeDate: (NSDate *) aDate;
- (NSInteger) daysAfterDate: (NSDate *) aDate;
- (NSInteger) daysBeforeDate: (NSDate *) aDate;
- (NSInteger)distanceInDaysToDate:(NSDate *)anotherDate; //分解的日期
@property (readonly) NSInteger nearestHour;
@property (readonly) NSInteger hour;
@property (readonly) NSInteger minute;
@property (readonly) NSInteger seconds;
@property (readonly) NSInteger day;
@property (readonly) NSInteger month;
@property (readonly) NSInteger week;
@property (readonly) NSInteger weekday;
@property (readonly) NSInteger nthWeekday; // e.g. 2nd Tuesday of the month == 2
@property (readonly) NSInteger year; #pragma mark 日期格式化
+ (id)dateFormatter; + (id)dateFormatterWithFormat:(NSString *)dateFormat; + (id)defaultDateFormatter;/*yyyy-MM-dd HH:mm:ss*/ @end

NSDate+Category.m 代码:

#import "NSDate+Category.h"

#define DATE_COMPONENTS (NSCalendarUnitYear| NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekOfYear |  NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitWeekday | NSCalendarUnitWeekdayOrdinal)
#define CURRENT_CALENDAR [NSCalendar currentCalendar] @implementation NSDate (Category) /**
* @brief 距离当前的时间间隔描述
*
* @param paramete 请求参数
*
* @return NSString格式的请求参数
*/
- (NSString *)timeIntervalDescription
{
NSTimeInterval timeInterval = -[self timeIntervalSinceNow];
if (timeInterval < ) {
return @"1分钟内";
} else if (timeInterval < ) {
return [NSString stringWithFormat:@"%ld分钟前", (long)timeInterval/];
} else if (timeInterval < ) {
return [NSString stringWithFormat:@"%ld小时前", (long)timeInterval / ];
} else if (timeInterval < ) {//30天内
return [NSString stringWithFormat:@"%ld天前", (long)timeInterval / ];
} else if (timeInterval < ) {//30天至1年内
NSDateFormatter *dateFormatter = [NSDate dateFormatterWithFormat:@"M月d日"];
return [dateFormatter stringFromDate:self];
} else {
return [NSString stringWithFormat:@"%ld年前", (long)timeInterval / ];
}
} /**
* @brief 精确到分钟的日期描述
*
* @param paramete 请求参数
*
* @return NSString格式的请求参数
*/
- (NSString *)minuteDescription
{
NSDateFormatter *dateFormatter = [NSDate dateFormatterWithFormat:@"yyyy-MM-dd"]; NSString *theDay = [dateFormatter stringFromDate:self];//日期的年月日
NSString *currentDay = [dateFormatter stringFromDate:[NSDate date]];//当前年月日
if ([theDay isEqualToString:currentDay]) {//当天
[dateFormatter setDateFormat:@"ah:mm"];
return [dateFormatter stringFromDate:self];
} else if ([[dateFormatter dateFromString:currentDay] timeIntervalSinceDate:[dateFormatter dateFromString:theDay]] == ) {//昨天
[dateFormatter setDateFormat:@"ah:mm"];
return [NSString stringWithFormat:@"昨天 %@", [dateFormatter stringFromDate:self]];
} else if ([[dateFormatter dateFromString:currentDay] timeIntervalSinceDate:[dateFormatter dateFromString:theDay]] < * ) {//间隔一周内
[dateFormatter setDateFormat:@"EEEE ah:mm"];
return [dateFormatter stringFromDate:self];
} else {//以前
[dateFormatter setDateFormat:@"yyyy-MM-dd ah:mm"];
return [dateFormatter stringFromDate:self];
}
} /**
* @brief 标准时间日期描述
*
* @param paramete 请求参数
*
* @return NSString格式的请求参数
*/
-(NSString *)formattedTime{
NSDateFormatter* formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"YYYY-MM-dd"];
NSString * dateNow = [formatter stringFromDate:[NSDate date]];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setDay:[[dateNow substringWithRange:NSMakeRange(,)] intValue]];
[components setMonth:[[dateNow substringWithRange:NSMakeRange(,)] intValue]];
[components setYear:[[dateNow substringWithRange:NSMakeRange(,)] intValue]];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *date = [gregorian dateFromComponents:components]; //今天 0点时间 NSInteger hour = [self hoursAfterDate:date];
NSDateFormatter *dateFormatter = nil;
NSString *ret = @""; //hasAMPM==TURE为12小时制,否则为24小时制
NSString *formatStringForHours = [NSDateFormatter dateFormatFromTemplate:@"j" options: locale:[NSLocale currentLocale]];
NSRange containsA = [formatStringForHours rangeOfString:@"a"];
BOOL hasAMPM = containsA.location != NSNotFound; if (!hasAMPM) { //24小时制
if (hour <= && hour >= ) {
dateFormatter = [NSDate dateFormatterWithFormat:@"HH:mm"];
}else if (hour < && hour >= -) {
dateFormatter = [NSDate dateFormatterWithFormat:@"昨天HH:mm"];
}else {
dateFormatter = [NSDate dateFormatterWithFormat:@"yyyy-MM-dd HH:mm"];
}
}else {
if (hour >= && hour <= ) {
dateFormatter = [NSDate dateFormatterWithFormat:@"凌晨hh:mm"];
}else if (hour > && hour <= ) {
dateFormatter = [NSDate dateFormatterWithFormat:@"上午hh:mm"];
}else if (hour > && hour <= ) {
dateFormatter = [NSDate dateFormatterWithFormat:@"下午hh:mm"];
}else if (hour > && hour <= ) {
dateFormatter = [NSDate dateFormatterWithFormat:@"晚上hh:mm"];
}else if (hour < && hour >= -){
dateFormatter = [NSDate dateFormatterWithFormat:@"昨天HH:mm"];
}else {
dateFormatter = [NSDate dateFormatterWithFormat:@"yyyy-MM-dd HH:mm"];
}
} ret = [dateFormatter stringFromDate:self];
return ret;
} /**
* @brief 格式化日期描述
*
* @param paramete 请求参数
*
* @return NSString格式的请求参数
*/
- (NSString *)formattedDateDescription
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *theDay = [dateFormatter stringFromDate:self];//日期的年月日
NSString *currentDay = [dateFormatter stringFromDate:[NSDate date]];//当前年月日 NSInteger timeInterval = -[self timeIntervalSinceNow]; if (timeInterval < ) {
return @"1分钟内";
} else if (timeInterval < ) {//1小时内
return [NSString stringWithFormat:@"%ld分钟前", (long)timeInterval / ];
} else if (timeInterval < ) {//6小时内
return [NSString stringWithFormat:@"%ld小时前", (long)timeInterval / ];
} else if ([theDay isEqualToString:currentDay]) {//当天
[dateFormatter setDateFormat:@"HH:mm"];
return [NSString stringWithFormat:@"今天 %@", [dateFormatter stringFromDate:self]];
} else if ([[dateFormatter dateFromString:currentDay] timeIntervalSinceDate:[dateFormatter dateFromString:theDay]] == ) {//昨天
[dateFormatter setDateFormat:@"HH:mm"];
return [NSString stringWithFormat:@"昨天 %@", [dateFormatter stringFromDate:self]];
} else {//以前
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];
return [dateFormatter stringFromDate:self];
}
} - (double)timeIntervalSince1970InMilliSecond {
double ret;
ret = [self timeIntervalSince1970] * ; return ret;
} + (NSDate *)dateWithTimeIntervalInMilliSecondSince1970:(double)timeIntervalInMilliSecond {
NSDate *ret = nil;
double timeInterval = timeIntervalInMilliSecond;
// 判断参数是否在secconds中(对于以前的数据结构)
if(timeIntervalInMilliSecond > ) {
timeInterval = timeIntervalInMilliSecond / ;
}
ret = [NSDate dateWithTimeIntervalSince1970:timeInterval]; return ret;
} + (NSString *)formattedTimeFromTimeInterval:(long long)time{
return [[NSDate dateWithTimeIntervalInMilliSecondSince1970:time] formattedTime];
} #pragma mark Relative Dates + (NSDate *) dateWithDaysFromNow: (NSInteger) days
{
return [[NSDate date] dateByAddingDays:days];
} + (NSDate *) dateWithDaysBeforeNow: (NSInteger) days
{
// Thanks, Jim Morrison
return [[NSDate date] dateBySubtractingDays:days];
} + (NSDate *) dateTomorrow
{
return [NSDate dateWithDaysFromNow:];
} + (NSDate *) dateYesterday
{
return [NSDate dateWithDaysBeforeNow:];
} + (NSDate *) dateWithHoursFromNow: (NSInteger) dHours
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] + D_HOUR * dHours;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return newDate;
} + (NSDate *) dateWithHoursBeforeNow: (NSInteger) dHours
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] - D_HOUR * dHours;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return newDate;
} + (NSDate *) dateWithMinutesFromNow: (NSInteger) dMinutes
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] + D_MINUTE * dMinutes;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return newDate;
} + (NSDate *) dateWithMinutesBeforeNow: (NSInteger) dMinutes
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] - D_MINUTE * dMinutes;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return newDate;
} + (NSString *)weekdayStringValue:(NSDate*)date
{
NSCalendar *calendar = [NSCalendar currentCalendar];
NSInteger unitFlags = NSWeekCalendarUnit|NSWeekdayCalendarUnit;
NSDateComponents *comps = [calendar components:unitFlags fromDate:date];
NSInteger weekday = [comps weekday];
switch (weekday)
{
case :
return @"星期天";
break;
case :
return @"星期一";
break;
case :
return @"星期二";
break;
case :
return @"星期三";
break;
case :
return @"星期四";
break;
case :
return @"星期五";
break;
case :
return @"星期六";
break; default:
break;
}
return nil;
} #pragma mark Comparing Dates
- (BOOL) isEqualToDateIgnoringTime: (NSDate *) aDate
{
NSDateComponents *components1 = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
NSDateComponents *components2 = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:aDate];
return ((components1.year == components2.year) &&
(components1.month == components2.month) &&
(components1.day == components2.day));
} - (BOOL) isToday
{
return [self isEqualToDateIgnoringTime:[NSDate date]];
} - (BOOL) isTomorrow
{
return [self isEqualToDateIgnoringTime:[NSDate dateTomorrow]];
} - (BOOL) isYesterday
{
return [self isEqualToDateIgnoringTime:[NSDate dateYesterday]];
} - (BOOL) isSameWeekAsDate: (NSDate *) aDate
{
NSDateComponents *components1 = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
NSDateComponents *components2 = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:aDate]; // 必须在同一周。12/31和1/1如果在同一周,都是周1
if (components1.weekOfYear != components2.weekOfYear) return NO; // 必须有一个时间间隔不到1周
return (fabs([self timeIntervalSinceDate:aDate]) < D_WEEK);
} - (BOOL) isThisWeek
{
return [self isSameWeekAsDate:[NSDate date]];
} - (BOOL) isNextWeek
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] + D_WEEK;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return [self isSameWeekAsDate:newDate];
} - (BOOL) isLastWeek
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] - D_WEEK;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return [self isSameWeekAsDate:newDate];
} - (BOOL) isSameMonthAsDate: (NSDate *) aDate
{
NSDateComponents *components1 = [CURRENT_CALENDAR components:NSCalendarUnitYear | NSCalendarUnitMonth fromDate:self];
NSDateComponents *components2 = [CURRENT_CALENDAR components:NSCalendarUnitYear | NSCalendarUnitMonth fromDate:aDate];
return ((components1.month == components2.month) &&
(components1.year == components2.year));
} - (BOOL) isThisMonth
{
return [self isSameMonthAsDate:[NSDate date]];
} - (BOOL) isSameYearAsDate: (NSDate *) aDate
{
NSDateComponents *components1 = [CURRENT_CALENDAR components:NSCalendarUnitYear fromDate:self];
NSDateComponents *components2 = [CURRENT_CALENDAR components:NSCalendarUnitYear fromDate:aDate];
return (components1.year == components2.year);
} - (BOOL) isThisYear
{
return [self isSameYearAsDate:[NSDate date]];
} - (BOOL) isNextYear
{
NSDateComponents *components1 = [CURRENT_CALENDAR components:NSCalendarUnitYear fromDate:self];
NSDateComponents *components2 = [CURRENT_CALENDAR components:NSCalendarUnitYear fromDate:[NSDate date]]; return (components1.year == (components2.year + ));
} - (BOOL) isLastYear
{
NSDateComponents *components1 = [CURRENT_CALENDAR components:NSCalendarUnitYear fromDate:self];
NSDateComponents *components2 = [CURRENT_CALENDAR components:NSCalendarUnitYear fromDate:[NSDate date]]; return (components1.year == (components2.year - ));
} - (BOOL) isEarlierThanDate: (NSDate *) aDate
{
return ([self compare:aDate] == NSOrderedAscending);
} - (BOOL) isLaterThanDate: (NSDate *) aDate
{
return ([self compare:aDate] == NSOrderedDescending);
} - (BOOL) isInFuture
{
return ([self isLaterThanDate:[NSDate date]]);
} - (BOOL) isInPast
{
return ([self isEarlierThanDate:[NSDate date]]);
} #pragma mark Roles
- (BOOL) isTypicallyWeekend
{
NSDateComponents *components = [CURRENT_CALENDAR components:NSCalendarUnitWeekday fromDate:self];
if ((components.weekday == ) ||
(components.weekday == ))
return YES;
return NO;
} - (BOOL) isTypicallyWorkday
{
return ![self isTypicallyWeekend];
} #pragma mark Adjusting Dates - (NSDate *) dateByAddingDays: (NSInteger) dDays
{
NSTimeInterval aTimeInterval = [self timeIntervalSinceReferenceDate] + D_DAY * dDays;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return newDate;
} - (NSDate *) dateBySubtractingDays: (NSInteger) dDays
{
return [self dateByAddingDays: (dDays * -)];
} - (NSDate *) dateByAddingHours: (NSInteger) dHours
{
NSTimeInterval aTimeInterval = [self timeIntervalSinceReferenceDate] + D_HOUR * dHours;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return newDate;
} - (NSDate *) dateBySubtractingHours: (NSInteger) dHours
{
return [self dateByAddingHours: (dHours * -)];
} - (NSDate *) dateByAddingMinutes: (NSInteger) dMinutes
{
NSTimeInterval aTimeInterval = [self timeIntervalSinceReferenceDate] + D_MINUTE * dMinutes;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
return newDate;
} - (NSDate *) dateBySubtractingMinutes: (NSInteger) dMinutes
{
return [self dateByAddingMinutes: (dMinutes * -)];
} - (NSDate *) dateAtStartOfDay
{
NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
components.hour = ;
components.minute = ;
components.second = ;
return [CURRENT_CALENDAR dateFromComponents:components];
} - (NSDateComponents *) componentsWithOffsetFromDate: (NSDate *) aDate
{
NSDateComponents *dTime = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:aDate toDate:self options:];
return dTime;
} #pragma mark Retrieving Intervals - (NSInteger) minutesAfterDate: (NSDate *) aDate
{
NSTimeInterval ti = [self timeIntervalSinceDate:aDate];
return (NSInteger) (ti / D_MINUTE);
} - (NSInteger) minutesBeforeDate: (NSDate *) aDate
{
NSTimeInterval ti = [aDate timeIntervalSinceDate:self];
return (NSInteger) (ti / D_MINUTE);
} - (NSInteger) hoursAfterDate: (NSDate *) aDate
{
NSTimeInterval ti = [self timeIntervalSinceDate:aDate];
return (NSInteger) (ti / D_HOUR);
} - (NSInteger) hoursBeforeDate: (NSDate *) aDate
{
NSTimeInterval ti = [aDate timeIntervalSinceDate:self];
return (NSInteger) (ti / D_HOUR);
} - (NSInteger) daysAfterDate: (NSDate *) aDate
{
NSTimeInterval ti = [self timeIntervalSinceDate:aDate];
return (NSInteger) (ti / D_DAY);
} - (NSInteger) daysBeforeDate: (NSDate *) aDate
{
NSTimeInterval ti = [aDate timeIntervalSinceDate:self];
return (NSInteger) (ti / D_DAY);
} - (NSInteger)distanceInDaysToDate:(NSDate *)anotherDate
{
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [gregorianCalendar components:NSCalendarUnitDay fromDate:self toDate:anotherDate options:];
return components.day;
} #pragma mark Decomposing Dates - (NSInteger) nearestHour
{
NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] + D_MINUTE * ;
NSDate *newDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTimeInterval];
NSDateComponents *components = [CURRENT_CALENDAR components:NSCalendarUnitHour fromDate:newDate];
return components.hour;
} - (NSInteger) hour
{
NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
return components.hour;
} - (NSInteger) minute
{
NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
return components.minute;
} - (NSInteger) seconds
{
NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
return components.second;
} - (NSInteger) day
{
NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
return components.day;
} - (NSInteger) month
{
NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
return components.month;
} - (NSInteger) week
{
NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
return components.weekOfYear;
} - (NSInteger) weekday
{
NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
return components.weekday;
} - (NSInteger) nthWeekday // e.g. 2nd Tuesday of the month is 2
{
NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
return components.weekdayOrdinal;
} - (NSInteger) year
{
NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
return components.year;
} #pragma mark 格式化日期
+ (id)dateFormatter
{
return [[self alloc] init];
} + (id)dateFormatterWithFormat:(NSString *)dateFormat
{
NSDateFormatter *dateFormatter = [[self alloc] init];
dateFormatter.dateFormat = dateFormat;
return dateFormatter;
} + (id)defaultDateFormatter
{
return [self dateFormatterWithFormat:@"yyyy-MM-dd HH:mm:ss"];
} @end

iOS NSDate 常用日期相关函数的封装的更多相关文章

  1. iOS NSDate等时间类的使用

    一.NSDate NSDate对象用来表示一个具体的时间点. NSDate是一个类簇,我们所使用的NSDate对象,都是NSDate的私有子类的实体. NSDate存储的是GMT时间,使用的时候会根据 ...

  2. iOS中的日期和时间

    转载于http://www.jianshu.com/p/ee279c175cf8 一.时间和日期计算 我们在应用开发中,时常需要和时间打交道,比如获取当前时间,获取两个时间点相隔的时间等等,在iOS开 ...

  3. iOS比较常用的第三方及实例(不断更新中)

    把平时看到或项目用到的一些插件进行整理,文章后面分享一些不错的实例,若你有其它的插件欢迎分享,不断的进行更新: 一:第三方插件 1:基于响应式编程思想的oc 地址:https://github.com ...

  4. IOS NSDate NSDateFormatter 导致相差8小时

    时间问题应该是所有编程语言都要处理的.详细学过php的同学知道,php中也会有相差8小时的问题,然而php可以非常方便的解决的,直接设置下就好了 我最近在学习IOS的过程中,发现IOS的日期处理也是个 ...

  5. IOS 开发-- 常用-- 核心代码

    网络请求 (包含block 和 delegate) 数据持久化技术 手势处理’ XML数据解析 多线程实现 核心动画编程 地图定位功能 CoreData数据持久化技术 本地通知和推送通知 常用宏定义 ...

  6. iOS开发常用第三方库

    UI 动画 网络相关 Model 其他 数据库 缓存处理 PDF 图像浏览及处理 摄像照相视频音频处理 响应式框架 消息相关 版本新API的Demo 代码安全与密码 测试及调试 AppleWatch ...

  7. iOS开发-常用第三方开源框架介绍

    iOS开发-常用第三方开源框架介绍 图像: 1.图片浏览控件MWPhotoBrowser        实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网 ...

  8. PHP中的日期相关函数(二)

    上回文章中我们介绍了三个时间日期相关的对象,不过它们的出镜频率并不是特别地高.今天学习的对象虽说可能不少人使用过,但是它的出镜频率也是非常低的.它们其实就是我们非常常用的那些面向过程的日期函数的面向对 ...

  9. NSDate 总结日期操作

    IOS Object-c NSDate总结日期操作 //NSDate //1, 创建NSDate对象 NSDate *nowDate = [NSDate date]; NSLog(@"%@& ...

随机推荐

  1. Azure ARM (22) Azure Policy入门

    <Windows Azure Platform 系列文章目录> 我们知道,在Azure服务层级中,分为以下几个层次: 1.企业合同 2.订阅 3.资源组 4.资源 我们使用的Azure资源 ...

  2. SQLite win7

    https://blog.csdn.net/louislee92/article/details/50390000 vs2008利用sqlite A 添加sqlite3.h sqlite3.lib到工 ...

  3. CodeForces 1098F. Ж-function

    题目简述:给定字符串$s[1 \dots n](n \leq 2 \times 10^5)$,以及$Q \leq 2 \times 10^5$个询问,每个询问有两个参数$1 \leq l \leq r ...

  4. CodeForces 1098D. Eels

    题目简述:对一个非空正整数(可重)集合$S$,从中选出两个元素$a, b (a \leq b)$,将他们从$S$中删除并将$a+b$加入$S$,重复这个操作直到$S$中只剩下一个元素为止,称为一次[竞 ...

  5. Java中的标识符,类名和包名规则

    Java中的包.类.方法.参数和变量的名称 标识符的命名规则 1.变量必须以字母.下划线(_)或美元符号($)开头 2.余下的字符可以是下划线.美元符号或任何的字母或数字 3.不能使用JavaScri ...

  6. monkeyRunner

    MonkeyRunner工具是使用Jython(使用Java编程语言实现的Python)写出来的,它提供了多个API,通过monkeyrunner API 可以写一个Python的程序来模拟操作控制A ...

  7. linux中的调试知识---基础gdb和strace查看系统调用信息,top性能分析,ps进程查看,内存分析工具

    1 调试一般分为两种,可以通过在程序中插入打印语句.有点能够显示程序的动态过程,比较容易的检查出源程序中的有关信息.缺点就是效率比较低了,而且需要输入大量无关的数据. 2 借助相关的调试工具. 3 有 ...

  8. c++中IO输入输出流总结<二>

    1 文件的打开和关闭 1.1 定义流对象 ifsteam iflie;//文件输入流对象 ifsteam iflie;//文件输出流对象 fsteam iflie;//文件输入输出流对象 1.2 打开 ...

  9. 3-2if条件结构

    不同条件做不同的操作.例如满100就减去20 条件结构 package com.imooc.operator; public class ConditionDemo1 { public static ...

  10. 解决“System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本”

    问题描述:远程访问该数据库(客户端同样是Oracle11g)提示“System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本”. 解决的办法: 1.一定要关闭Win ...