From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001
From: 单军华
Date: Wed, 11 Jul 2018 10:47:42 +0800
Subject: [PATCH] 首次上传

---
 screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Util/Category/NSDate+Category.m |  515 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 515 insertions(+), 0 deletions(-)

diff --git a/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Util/Category/NSDate+Category.m b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Util/Category/NSDate+Category.m
new file mode 100755
index 0000000..5cda0d8
--- /dev/null
+++ b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Util/Category/NSDate+Category.m
@@ -0,0 +1,515 @@
+/************************************************************
+ *  * Hyphenate CONFIDENTIAL
+ * __________________
+ * Copyright (C) 2016 Hyphenate Inc. All rights reserved.
+ *
+ * NOTICE: All information contained herein is, and remains
+ * the property of Hyphenate Inc.
+ * Dissemination of this information or reproduction of this material
+ * is strictly forbidden unless prior written permission is obtained
+ * from Hyphenate Inc.
+ */
+
+#import "NSDate+Category.h"
+#import "NSDateFormatter+Category.h"
+#import "EaseLocalDefine.h"
+
+#define DATE_COMPONENTS (NSCalendarUnitYear| NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekOfYear |  NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitWeekday | NSCalendarUnitWeekdayOrdinal)
+#define CURRENT_CALENDAR [NSCalendar currentCalendar]
+
+@implementation NSDate (Category)
+
+- (NSString *)timeIntervalDescription
+{
+    NSTimeInterval timeInterval = -[self timeIntervalSinceNow];
+	if (timeInterval < 60) {
+        return NSEaseLocalizedString(@"NSDateCategory.text1", @"");
+	} else if (timeInterval < 3600) {
+        return [NSString stringWithFormat:NSEaseLocalizedString(@"NSDateCategory.text2", @""), timeInterval / 60];
+	} else if (timeInterval < 86400) {
+        return [NSString stringWithFormat:NSEaseLocalizedString(@"NSDateCategory.text3", @""), timeInterval / 3600];
+	} else if (timeInterval < 2592000) {//within 30 days
+        return [NSString stringWithFormat:NSEaseLocalizedString(@"NSDateCategory.text4", @""), timeInterval / 86400];
+    } else if (timeInterval < 31536000) {//30 days to a year
+        NSDateFormatter *dateFormatter = [NSDateFormatter dateFormatterWithFormat:NSEaseLocalizedString(@"NSDateCategory.text5", @"")];
+        return [dateFormatter stringFromDate:self];
+    } else {
+        return [NSString stringWithFormat:NSEaseLocalizedString(@"NSDateCategory.text6", @""), timeInterval / 31536000];
+    }
+}
+
+- (NSString *)minuteDescription
+{
+    NSDateFormatter *dateFormatter = [NSDateFormatter 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]] == 86400) {//one day ago
+        [dateFormatter setDateFormat:@"ah:mm"];
+        return [NSString stringWithFormat:NSEaseLocalizedString(@"NSDateCategory.text7", @'"'), [dateFormatter stringFromDate:self]];
+    } else if ([[dateFormatter dateFromString:currentDay] timeIntervalSinceDate:[dateFormatter dateFromString:theDay]] < 86400 * 7) {//within a week
+        [dateFormatter setDateFormat:@"EEEE ah:mm"];
+        return [dateFormatter stringFromDate:self];
+    } else {
+		[dateFormatter setDateFormat:@"yyyy-MM-dd ah:mm"];
+        return [dateFormatter stringFromDate:self];
+	}
+}
+
+-(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(8,2)] intValue]];
+    [components setMonth:[[dateNow substringWithRange:NSMakeRange(5,2)] intValue]];
+    [components setYear:[[dateNow substringWithRange:NSMakeRange(0,4)] intValue]];
+    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
+    NSDate *date = [gregorian dateFromComponents:components];
+ 
+    NSInteger hour = [self hoursAfterDate:date];
+    NSDateFormatter *dateFormatter = nil;
+    NSString *ret = @"";
+    
+    //If hasAMPM==TURE, use 12-hour clock, otherwise use 24-hour clock
+    NSString *formatStringForHours = [NSDateFormatter dateFormatFromTemplate:@"j" options:0 locale:[NSLocale currentLocale]];
+    NSRange containsA = [formatStringForHours rangeOfString:@"a"];
+    BOOL hasAMPM = containsA.location != NSNotFound;
+    
+    if (!hasAMPM) { //24-hour clock
+        if (hour <= 24 && hour >= 0) {
+            dateFormatter = [NSDateFormatter dateFormatterWithFormat:@"HH:mm"];
+        }else if (hour < 0 && hour >= -24) {
+            dateFormatter = [NSDateFormatter dateFormatterWithFormat:NSEaseLocalizedString(@"NSDateCategory.text8", @"")];
+        }else {
+            dateFormatter = [NSDateFormatter dateFormatterWithFormat:@"yyyy-MM-dd HH:mm"];
+        }
+    }else {
+        if (hour >= 0 && hour <= 6) {
+            dateFormatter = [NSDateFormatter dateFormatterWithFormat:NSEaseLocalizedString(@"NSDateCategory.text9", @"")];
+        }else if (hour > 6 && hour <=11 ) {
+            dateFormatter = [NSDateFormatter dateFormatterWithFormat:NSEaseLocalizedString(@"NSDateCategory.text10", @"")];
+        }else if (hour > 11 && hour <= 17) {
+            dateFormatter = [NSDateFormatter dateFormatterWithFormat:NSEaseLocalizedString(@"NSDateCategory.text11", @"")];
+        }else if (hour > 17 && hour <= 24) {
+            dateFormatter = [NSDateFormatter dateFormatterWithFormat:NSEaseLocalizedString(@"NSDateCategory.text12", @"")];
+        }else if (hour < 0 && hour >= -24){
+            dateFormatter = [NSDateFormatter dateFormatterWithFormat:NSEaseLocalizedString(@"NSDateCategory.text13", @"")];
+        }else  {
+            dateFormatter = [NSDateFormatter dateFormatterWithFormat:@"yyyy-MM-dd HH:mm"];
+        }
+    }
+    
+    ret = [dateFormatter stringFromDate:self];
+    return ret;
+}
+
+- (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 < 60) {
+        return NSEaseLocalizedString(@"NSDateCategory.text1", @"");
+	} else if (timeInterval < 3600) {//within an hour
+        return [NSString stringWithFormat:NSEaseLocalizedString(@"NSDateCategory.text2", @""), timeInterval / 60];
+	} else if (timeInterval < 21600) {//within 6 hour
+        return [NSString stringWithFormat:NSEaseLocalizedString(@"NSDateCategory.text3", @""), timeInterval / 3600];
+	} else if ([theDay isEqualToString:currentDay]) {//current day
+		[dateFormatter setDateFormat:@"HH:mm"];
+        return [NSString stringWithFormat:NSEaseLocalizedString(@"NSDateCategory.text14", @""), [dateFormatter stringFromDate:self]];
+	} else if ([[dateFormatter dateFromString:currentDay] timeIntervalSinceDate:[dateFormatter dateFromString:theDay]] == 86400) {//one day ago
+        [dateFormatter setDateFormat:@"HH:mm"];
+        return [NSString stringWithFormat:NSEaseLocalizedString(@"NSDateCategory.text7", @""), [dateFormatter stringFromDate:self]];
+    } else {
+		[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];
+        return [dateFormatter stringFromDate:self];
+	}
+}
+
+- (double)timeIntervalSince1970InMilliSecond {
+    double ret;
+    ret = [self timeIntervalSince1970] * 1000;
+    
+    return ret;
+}
+
++ (NSDate *)dateWithTimeIntervalInMilliSecondSince1970:(double)timeIntervalInMilliSecond {
+    NSDate *ret = nil;
+    double timeInterval = timeIntervalInMilliSecond;
+    // judge if the argument is in secconds(for former data structure).
+    if(timeIntervalInMilliSecond > 140000000000) {
+        timeInterval = timeIntervalInMilliSecond / 1000;
+    }
+    ret = [NSDate dateWithTimeIntervalSince1970:timeInterval];
+    
+    return ret;
+}
+
++ (NSString *)formattedTimeFromTimeInterval:(long long)time{
+    return [[NSDate dateWithTimeIntervalInMilliSecondSince1970:time] formattedTime];
+}
+
+#pragma mark Relative Dates
+
++ (NSDate *) dateWithDaysFromNow: (NSInteger) days
+{
+    // Thanks, Jim Morrison
+	return [[NSDate date] dateByAddingDays:days];
+}
+
++ (NSDate *) dateWithDaysBeforeNow: (NSInteger) days
+{
+    // Thanks, Jim Morrison
+	return [[NSDate date] dateBySubtractingDays:days];
+}
+
++ (NSDate *) dateTomorrow
+{
+	return [NSDate dateWithDaysFromNow:1];
+}
+
++ (NSDate *) dateYesterday
+{
+	return [NSDate dateWithDaysBeforeNow:1];
+}
+
++ (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;
+}
+
+#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]];
+}
+
+// This hard codes the assumption that a week is 7 days
+- (BOOL) isSameWeekAsDate: (NSDate *) aDate
+{
+	NSDateComponents *components1 = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
+	NSDateComponents *components2 = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:aDate];
+	
+	// Must be same week. 12/31 and 1/1 will both be week "1" if they are in the same week
+	if (components1.weekOfYear != components2.weekOfYear) return NO;
+	
+	// Must have a time interval under 1 week. Thanks @aclark
+	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];
+}
+
+// Thanks, mspasov
+- (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
+{
+    // Thanks, baspellis
+	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 + 1));
+}
+
+- (BOOL) isLastYear
+{
+	NSDateComponents *components1 = [CURRENT_CALENDAR components:NSCalendarUnitYear fromDate:self];
+	NSDateComponents *components2 = [CURRENT_CALENDAR components:NSCalendarUnitYear fromDate:[NSDate date]];
+	
+	return (components1.year == (components2.year - 1));
+}
+
+- (BOOL) isEarlierThanDate: (NSDate *) aDate
+{
+	return ([self compare:aDate] == NSOrderedAscending);
+}
+
+- (BOOL) isLaterThanDate: (NSDate *) aDate
+{
+	return ([self compare:aDate] == NSOrderedDescending);
+}
+
+// Thanks, markrickert
+- (BOOL) isInFuture
+{
+    return ([self isLaterThanDate:[NSDate date]]);
+}
+
+// Thanks, markrickert
+- (BOOL) isInPast
+{
+    return ([self isEarlierThanDate:[NSDate date]]);
+}
+
+
+#pragma mark Roles
+- (BOOL) isTypicallyWeekend
+{
+    NSDateComponents *components = [CURRENT_CALENDAR components:NSCalendarUnitWeekday fromDate:self];
+    if ((components.weekday == 1) ||
+        (components.weekday == 7))
+        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 * -1)];
+}
+
+- (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 * -1)];
+}
+
+- (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 * -1)];
+}
+
+- (NSDate *) dateAtStartOfDay
+{
+	NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self];
+	components.hour = 0;
+	components.minute = 0;
+	components.second = 0;
+	return [CURRENT_CALENDAR dateFromComponents:components];
+}
+
+- (NSDateComponents *) componentsWithOffsetFromDate: (NSDate *) aDate
+{
+	NSDateComponents *dTime = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:aDate toDate:self options:0];
+	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);
+}
+
+// Thanks, dmitrydims
+// I have not yet thoroughly tested this
+- (NSInteger)distanceInDaysToDate:(NSDate *)anotherDate
+{
+    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
+    NSDateComponents *components = [gregorianCalendar components:NSCalendarUnitDay fromDate:self toDate:anotherDate options:0];
+    return components.day;
+}
+
+#pragma mark Decomposing Dates
+
+- (NSInteger) nearestHour
+{
+	NSTimeInterval aTimeInterval = [[NSDate date] timeIntervalSinceReferenceDate] + D_MINUTE * 30;
+	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;
+}
+
+@end

--
Gitblit v1.8.0