iOS NSDate 常用日期相关函数的封装
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 常用日期相关函数的封装的更多相关文章
- iOS NSDate等时间类的使用
一.NSDate NSDate对象用来表示一个具体的时间点. NSDate是一个类簇,我们所使用的NSDate对象,都是NSDate的私有子类的实体. NSDate存储的是GMT时间,使用的时候会根据 ...
- iOS中的日期和时间
转载于http://www.jianshu.com/p/ee279c175cf8 一.时间和日期计算 我们在应用开发中,时常需要和时间打交道,比如获取当前时间,获取两个时间点相隔的时间等等,在iOS开 ...
- iOS比较常用的第三方及实例(不断更新中)
把平时看到或项目用到的一些插件进行整理,文章后面分享一些不错的实例,若你有其它的插件欢迎分享,不断的进行更新: 一:第三方插件 1:基于响应式编程思想的oc 地址:https://github.com ...
- IOS NSDate NSDateFormatter 导致相差8小时
时间问题应该是所有编程语言都要处理的.详细学过php的同学知道,php中也会有相差8小时的问题,然而php可以非常方便的解决的,直接设置下就好了 我最近在学习IOS的过程中,发现IOS的日期处理也是个 ...
- IOS 开发-- 常用-- 核心代码
网络请求 (包含block 和 delegate) 数据持久化技术 手势处理’ XML数据解析 多线程实现 核心动画编程 地图定位功能 CoreData数据持久化技术 本地通知和推送通知 常用宏定义 ...
- iOS开发常用第三方库
UI 动画 网络相关 Model 其他 数据库 缓存处理 PDF 图像浏览及处理 摄像照相视频音频处理 响应式框架 消息相关 版本新API的Demo 代码安全与密码 测试及调试 AppleWatch ...
- iOS开发-常用第三方开源框架介绍
iOS开发-常用第三方开源框架介绍 图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网 ...
- PHP中的日期相关函数(二)
上回文章中我们介绍了三个时间日期相关的对象,不过它们的出镜频率并不是特别地高.今天学习的对象虽说可能不少人使用过,但是它的出镜频率也是非常低的.它们其实就是我们非常常用的那些面向过程的日期函数的面向对 ...
- NSDate 总结日期操作
IOS Object-c NSDate总结日期操作 //NSDate //1, 创建NSDate对象 NSDate *nowDate = [NSDate date]; NSLog(@"%@& ...
随机推荐
- Flask-SQLAlchemy配置
下面是 Flask-SQLAlchemy 中存在的配置值.Flask-SQLAlchemy 从您的 Flask 主配置中加载这些值. 注意其中的一些在引擎创建后不能修改,所以确保尽早配置且不在运行时修 ...
- 【Boost】boost库asio详解2——io_service::run函数无任务时退出的问题
io_service::work类可以使io_service::run函数在没有任务的时候仍然不返回,直至work对象被销毁. void test_asio_nowork() { boost::asi ...
- 你忘记的java的数据类型信息
java有8种基本数据类型 int long short byte float double char boolean: 三种情况造成数据溢出 无穷大,无穷小, NAN: 常量 声明为final的变量 ...
- 【225】ArcEngine 实现要素添加 & 删除
参考:ArcGIS Engine效率探究——要素的添加和删除.属性的读取和更新 删除要素 //添加图层,显示在最上面 axMapControl1.AddShapeFile(@"D:\01-业 ...
- int和Integer及拆箱与装箱
int和Integer 如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null.但是如果面试官再问一下In ...
- OO易错点总结
在写子类的构造函数时,要在初始化列表中指定使用的父类的构造函数并完成其初始化,如下例: AudioBook(const string& bookname, const string& ...
- c语言中的# ## 可变参数宏 ...和_ _VA_ARGS_ _
1.#假如希望在字符串中包含宏参数,ANSI C允许这样作,在类函数宏的替换部分,#符号用作一个预处理运算符,它可以把语言符号转化程字符串.例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字 ...
- 《剑指offer》面试题16—反转链表
Node* p1 p2 p3 思路:开始时,p1为NULL,p2=phead,p3=p2—>next.使p2—>next = p1,然后使p1=p2,p2=p3.如果只有1个结点则此时 ...
- 两个MATLAB在线工具,画图啥的都不用安装了
1. matlab网页版 http://octave-online.net/ http://www.compileonline.com/execute_matlab_online.php 2. 函 ...
- CString和CStringA之间的转换
使用UNICODE字符集编程时,总是需要使用那些不支持UNICODE的库,例如sqlite3,Lua等必须使用char*类型的.这个时候用CStringA是最好的. 另外CStringA与CStrin ...