|
// Created by EasyIOS on 14-4-10.
// Copyright (c) 2014年 zhuchao. All rights reserved.
//
#import "NSDate+EasyExtend.h"
#import "NSNumber+EasyExtend.h"
const NSInteger SECOND = 1;
const NSInteger MINUTE = 60 * SECOND;
const NSInteger HOUR = 60 * MINUTE;
const NSInteger DAY = 24 * HOUR;
const NSInteger MONTH = 30 * DAY;
const NSInteger YEAR = 12 * MONTH;
@implementation NSDate(EasyExtend)
@dynamic year;
@dynamic month;
@dynamic day;
@dynamic hour;
@dynamic minute;
@dynamic second;
@dynamic weekday;
- (NSInteger)year
{
return [[NSCalendar currentCalendar] components:NSYearCalendarUnit
fromDate:self].year;
}
- (NSInteger)month
{
return [[NSCalendar currentCalendar] components:NSMonthCalendarUnit
fromDate:self].month;
}
- (NSInteger)day
{
return [[NSCalendar currentCalendar] components:NSDayCalendarUnit
fromDate:self].day;
}
- (NSInteger)hour
{
return [[NSCalendar currentCalendar] components:NSHourCalendarUnit
fromDate:self].hour;
}
- (NSInteger)minute
{
return [[NSCalendar currentCalendar] components:NSMinuteCalendarUnit
fromDate:self].minute;
}
- (NSInteger)second
{
return [[NSCalendar currentCalendar] components:NSSecondCalendarUnit
fromDate:self].second;
}
- (NSInteger)weekday
{
return [[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit
fromDate:self].weekday;
}
- (NSString *)stringWithDateFormat:(NSString *)format
{
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:format];
return [dateFormatter stringFromDate:self];
}
- (NSString *)timeAgo
{
NSTimeInterval delta = [[NSDate date] timeIntervalSinceDate:self];
if (delta < 1 * MINUTE)
{
return @"刚刚";
}
else if (delta < 2 * MINUTE)
{
return @"1分钟前";
}
else if (delta < 45 * MINUTE)
{
int minutes = floor((double)delta/MINUTE);
return [NSString stringWithFormat:@"%d分钟前", minutes];
}
else if (delta < 90 * MINUTE)
{
return @"1小时前";
}
else if (delta < 24 * HOUR)
{
int hours = floor((double)delta/HOUR);
return [NSString stringWithFormat:@"%d小时前", hours];
}
else if (delta < 48 * HOUR)
{
return @"昨天";
}
else if (delta < 30 * DAY)
{
int days = floor((double)delta/DAY);
return [NSString stringWithFormat:@"%d天前", days];
}
else if (delta < 12 * MONTH)
{
int months = floor((double)delta/MONTH);
return months <= 1 ? @"1个月前" : [NSString stringWithFormat:@"%d个月前", months];
}
int years = floor((double)delta/MONTH/12.0);
return years <= 1 ? @"1年前" : [NSString stringWithFormat:@"%d年前", years];
}
- (NSString *)timeLeft
{
long int delta = lround( [self timeIntervalSinceDate:[NSDate date]] );
NSMutableString * result = [NSMutableString string];
if ( delta >= YEAR )
{
NSInteger years = ( delta / YEAR );
[result appendFormat:@"%ld年", (long)years];
delta -= years * YEAR ;
}
if ( delta >= MONTH )
{
NSInteger months = ( delta / MONTH );
[result appendFormat:@"%ld月", (long)months];
delta -= months * MONTH ;
}
if ( delta >= DAY )
{
NSInteger days = ( delta / DAY );
[result appendFormat:@"%ld天", (long)days];
delta -= days * DAY ;
}
if ( delta >= HOUR )
{
NSInteger hours = ( delta / HOUR );
[result appendFormat:@"%ld小时", (long)hours];
delta -= hours * HOUR ;
}
if ( delta >= MINUTE )
{
NSInteger minutes = ( delta / MINUTE );
[result appendFormat:@"%ld分钟", (long)minutes];
delta -= minutes * MINUTE ;
}
NSInteger seconds = ( delta / SECOND );
[result appendFormat:@"%ld秒", (long)seconds];
return result;
}
+ (long long)timeStamp
{
return (long long)[[NSDate date] timeIntervalSince1970];
}
+ (NSDate *)dateWithString:(NSString *)string format:(NSString*)format
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:format];
return [dateFormatter dateFromString:string];
}
+ (NSDate *)now
{
return [NSDate date];
}
+(NSString*)stringTimeInterval:(NSInteger)longTime
{
NSInteger s = longTime % 60;
NSInteger m = longTime / 60;
NSInteger h = m/60;
NSInteger d = h/24;
//没有天
if (d == 0) {
//如果没有时
if (h == 0) {
return [NSString stringWithFormat:@"%02d:%02d",m,s];
}
else
{
return [NSString stringWithFormat:@"%02d:%02d:%02d",h,m,s];
}
}
else
{
return [NSString stringWithFormat:@"%ld天%02d:%02d:%02d",d,h,m,s];
}
}
+ (NSString*)stringHourAndMinute:(NSInteger)longTime
{
NSInteger s = longTime % 60;
NSInteger m = longTime / 60;
if (s > 0) {
m++;
}
NSInteger h = m/60;
m %= 60;
//如果没有时
if (h == 0) {
return [NSString stringWithFormat:@"%2ld分钟",(long)m];
}
else if(m == 0)
{
return [NSString stringWithFormat:@"%ld小时",(long)h];
}
else
{
return [NSString stringWithFormat:@"%ld小时%2ld分钟",(long)h,(long)m];
}
}
+ (NSString*)homeChartStringHourAndMinute:(NSInteger)longTime
{
NSInteger s = longTime % 60;
NSInteger m = longTime / 60;
if (s > 0) {
m++;
}
NSInteger h = m/60;
m %= 60;
//如果没有时
if (h == 0) {
return [NSString stringWithFormat:@"%2ld分钟",(long)m];
}
else if(m == 0)
{
return [NSString stringWithFormat:@"%ld小时",(long)h];
}
else
{
return [NSString stringWithFormat:@"%ld时%2ld分",(long)h,(long)m];
}
}
@end
// ----------------------------------
// Unit test
// ----------------------------------
#if defined(__BEE_UNITTEST__) && __BEE_UNITTEST__
TEST_CASE( NSDate_BeeExtension )
{
}
TEST_CASE_END
#endif // #if defined(__BEE_UNITTEST__) && __BEE_UNITTEST__
|