-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
49fd969
commit ef96569
Showing
4 changed files
with
299 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
151 changes: 151 additions & 0 deletions
151
Classes/Foundation/NSDateFormatter/NSDateFormatter+Make.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,151 @@ | ||
// | ||
// NSDateFormatter+Make.h | ||
// Category | ||
// | ||
// Created by 杨晴贺 on 2017/4/3. | ||
// Copyright © 2017年 silence. All rights reserved. | ||
// | ||
|
||
#import <Foundation/Foundation.h> | ||
|
||
typedef NS_ENUM(NSUInteger, NSDateFormatterFormat) { | ||
NSDateFormatterFormatNone = 0, | ||
/** | ||
* Returns a basic formatter for a full date as four digit year, two digit month of year, and two digit day of month (yyyyMMdd). | ||
* None: yyyyMMdd | ||
* Time: yyyyMMdd'T'HHmmss.SSSZ | ||
* NoMillis: yyyyMMdd'T'HHmmssZ | ||
*/ | ||
NSDateFormatterFormatBasic, | ||
/** | ||
* Returns a formatter for a full ordinal date, using a four digit year and three digit dayOfYear (yyyyDDD). | ||
* None: yyyyDDD | ||
* Time: yyyyDDD'T'HHmmss.SSSZ | ||
* NoMillis: yyyyDDD'T'HHmmssZ | ||
*/ | ||
NSDateFormatterFormatBasicOrdinalDate, | ||
/** | ||
* Returns a basic formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, three digit millis, and time zone offset (HHmmss.SSSZ). | ||
* None/Time: HHmmss.SSSZ | ||
* NoMillis: HHmmssZ | ||
*/ | ||
NSDateFormatterFormatBasicTime, | ||
/** | ||
* Returns a basic formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, three digit millis, and time zone offset prefixed by 'T' ('T'HHmmss.SSSZ). | ||
* None/Time: T'HHmmss.SSSZ | ||
* NoMillis: T'HHmmss | ||
*/ | ||
NSDateFormatterFormatBasicTTime, | ||
/** | ||
* Returns a basic formatter for a full date as four digit weekyear, two digit week of weekyear, and one digit day of week (xxxx'W'wwe). | ||
* None: xxxx'W'wwe | ||
* Time: xxxx'W'wwe'T'HHmmss.SSSZ | ||
* NoMillis: xxxx'W'wwe'T'HHmmssZ | ||
*/ | ||
NSDateFormatterFormatBasicWeekDate, | ||
/** | ||
* Returns a formatter for a full date as four digit year, two digit month of year, and two digit day of month (yyyy-MM-dd). | ||
* None: yyyy-MM-dd | ||
* Time: yyyy-MM-dd'T'HH:mm:ss.SSSZZ | ||
* NoMillis: yyyy-MM-dd'T'HH:mm:ssZZ | ||
*/ | ||
NSDateFormatterFormatDate, | ||
/** | ||
* Returns a formatter that combines a full date, two digit hour of day, two digit minute of hour, two digit second of minute, and three digit fraction of second (yyyy-MM-dd'T'HH:mm:ss.SSS). | ||
* None/Time: yyyy-MM-dd'T'HH:mm:ss.SSS | ||
* NoMillis: yyyy-MM-dd'T'HH:mm:ss | ||
*/ | ||
NSDateFormatterFormatDateHourMinuteSecondFraction, | ||
/** | ||
* Returns a formatter that combines a full date and time, separated by a 'T' (yyyy-MM-dd'T'HH:mm:ss.SSSZZ). | ||
* None/Time: yyyy-MM-dd'T'HH:mm:ss.SSSZZ | ||
* NoMillis: yyyy-MM-dd'T'HH:mm:ssZZ | ||
*/ | ||
NSDateFormatterFormatDateTime, | ||
/** | ||
* Returns a formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, and three digit fraction of second (HH:mm:ss.SSS). | ||
* None/Time: HH:mm:ss.SSS | ||
* NoMillis: HH:mm:ss | ||
*/ | ||
NSDateFormatterFormatHourMinuteSecondFraction, | ||
/** | ||
* Returns a formatter for a full ordinal date, using a four digit year and three digit dayOfYear (yyyy-DDD). | ||
* None: yyyy-MM-dd | ||
* Time: yyyy-DDD'T'HH:mm:ss.SSSZZ | ||
* NoMillis: yyyy-DDD'T'HH:mm:ssZZ | ||
*/ | ||
NSDateFormatterFormatOrdinalDate, | ||
/** | ||
* Returns a formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, three digit fraction of second, and time zone offset prefixed by 'T' ('T'HH:mm:ss.SSSZZ). | ||
* None/Time: 'T'HH:mm:ss.SSSZZ | ||
* NoMillis: 'T'HH:mm:ssZZ | ||
*/ | ||
NSDateFormatterFormatTTime, | ||
/** | ||
* Returns a formatter for a two digit hour of day, two digit minute of hour, two digit second of minute, three digit fraction of second, and time zone offset (HH:mm:ss.SSSZZ). | ||
* None/Time: HH:mm:ss.SSSZZ | ||
* NoMillis: HH:mm:ssZZ | ||
*/ | ||
NSDateFormatterFormatTime, | ||
/** | ||
* Returns a formatter for a full date as four digit weekyear, two digit week of weekyear, and one digit day of week (xxxx-'W'ww-e). | ||
* None: xxxx-'W'ww-e | ||
* Time: xxxx-'W'ww-e'T'HH:mm:ss.SSSZZ | ||
* NoMillis: xxxx-'W'ww-e'T'HH:mm:ssZZ | ||
*/ | ||
NSDateFormatterFormatWeekDate | ||
}; | ||
|
||
typedef NS_ENUM(NSUInteger, NSDateFormatterTimeStyle) { | ||
NSDateFormatterTimeStyleNone = 0, | ||
NSDateFormatterTimeStyleTime, | ||
NSDateFormatterTimeStyleNoMillis | ||
}; | ||
|
||
@interface NSDateFormatter (Make) | ||
|
||
/** | ||
* | ||
* Returns a `NSDateFormatter` with the specific `NSDateFormatterFormat` and `NSDateFormatterTimeStyle` | ||
* | ||
* @param format NSDateFormatterFormat | ||
* @param timeStyle NSDateFormatterFormat | ||
* | ||
* @return NSDateFormatter instance | ||
*/ | ||
+ (instancetype)dateFormatterWithDateFormat:(NSDateFormatterFormat)format timeStyle:(NSDateFormatterTimeStyle)timeStyle; | ||
|
||
|
||
/** | ||
* | ||
* Returns a `NSDateFormatter` with the specific `NSDateFormatterFormat` and `NSDateFormatterTimeStyleNone` as `NSDateFormatterTimeStyle` | ||
* | ||
* @param format NSDateFormatterFormat | ||
* | ||
* @return NSDateFormatter instance | ||
*/ | ||
+ (instancetype)dateFormatterWithDateFormat:(NSDateFormatterFormat)format; | ||
|
||
/** | ||
* | ||
* Returns a string date format with the specific `NSDateFormatterFormat` and `NSDateFormatterTimeStyle` | ||
* | ||
* @param format NSDateFormatterFormat | ||
* @param timeStyle NSDateFormatterTimeStyle | ||
* | ||
* @return NSString | ||
*/ | ||
+ (NSString *)stringFormatForFormat:(NSDateFormatterFormat)format timeStyle:(NSDateFormatterTimeStyle)timeStyle; | ||
|
||
|
||
/** | ||
* | ||
* Returns a string date format with the specific `NSDateFormatterFormat` and `NSDateFormatterTimeStyleNone` as `NSDateFormatterTimeStyle` | ||
* | ||
* @param format NSDateFormatterFormat | ||
* | ||
* @return NSString | ||
*/ | ||
+ (NSString *)stringFormatForFormat:(NSDateFormatterFormat)format; | ||
|
||
@end |
132 changes: 132 additions & 0 deletions
132
Classes/Foundation/NSDateFormatter/NSDateFormatter+Make.m
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
// | ||
// NSDateFormatter+Make.m | ||
// Category | ||
// | ||
// Created by 杨晴贺 on 2017/4/3. | ||
// Copyright © 2017年 silence. All rights reserved. | ||
// | ||
|
||
#import "NSDateFormatter+Make.h" | ||
|
||
@implementation NSDateFormatter (Make) | ||
|
||
+ (NSString *)stringFormatForFormat:(NSDateFormatterFormat)format{ | ||
return [self.class stringFormatForFormat:format timeStyle:NSDateFormatterTimeStyleNone]; | ||
} | ||
|
||
+ (NSString *)stringFormatForFormat:(NSDateFormatterFormat)format timeStyle:(NSDateFormatterTimeStyle)timeStyle{ | ||
switch (format) { | ||
case NSDateFormatterFormatNone: | ||
default: | ||
return nil; | ||
case NSDateFormatterFormatBasic: | ||
if (timeStyle == NSDateFormatterTimeStyleTime) { | ||
return @"yyyyMMdd'T'HHmmss.SSSZ"; | ||
} else if (timeStyle == NSDateFormatterTimeStyleNoMillis) { | ||
return @"yyyyMMdd'T'HHmmssZ"; | ||
} | ||
return @"yyyyMMdd"; | ||
|
||
case NSDateFormatterFormatBasicOrdinalDate: | ||
if (timeStyle == NSDateFormatterTimeStyleTime) { | ||
return @"yyyyDDD'T'HHmmss.SSSZ"; | ||
} else if (timeStyle == NSDateFormatterTimeStyleNoMillis) { | ||
return @"yyyyDDD'T'HHmmssZ"; | ||
} | ||
|
||
return @"yyyyDDD"; | ||
|
||
case NSDateFormatterFormatBasicTime: | ||
if (timeStyle == NSDateFormatterTimeStyleNoMillis) { | ||
return @"HHmmssZ"; | ||
} | ||
return @"HHmmss.SSSZ"; | ||
|
||
case NSDateFormatterFormatBasicTTime: | ||
if (timeStyle == NSDateFormatterTimeStyleNoMillis) { | ||
return @"T'HHmmssZ"; | ||
} | ||
return @"'T'HHmmss.SSSZ"; | ||
|
||
|
||
case NSDateFormatterFormatBasicWeekDate: | ||
if (timeStyle == NSDateFormatterTimeStyleTime) { | ||
return @"xxxx'W'wwe'T'HHmmss.SSSZ"; | ||
} else if (timeStyle == NSDateFormatterTimeStyleNoMillis) { | ||
return @"xxxx'W'wwe'T'HHmmssZ"; | ||
} | ||
return @"xxxx'W'wwe"; | ||
|
||
case NSDateFormatterFormatDate: | ||
if (timeStyle == NSDateFormatterTimeStyleTime) { | ||
return @"yyyy-MM-dd'T'HH:mm:ss.SSS"; | ||
} else if (timeStyle == NSDateFormatterTimeStyleNoMillis) { | ||
return @"yyyy-MM-dd'T'HH:mm:ss"; | ||
} | ||
return @"yyyy-MM-dd"; | ||
|
||
case NSDateFormatterFormatDateTime: | ||
if (timeStyle == NSDateFormatterTimeStyleNoMillis) { | ||
return @"yyyy-MM-dd'T'HH:mm:ssZZ"; | ||
} | ||
return @"yyyy-MM-dd'T'HH:mm:ss.SSSZZ"; | ||
|
||
case NSDateFormatterFormatHourMinuteSecondFraction: | ||
if (timeStyle == NSDateFormatterTimeStyleNoMillis) { | ||
return @"HH:mm:ss"; | ||
} | ||
return @"HH:mm:ss.SSS"; | ||
|
||
case NSDateFormatterFormatTime: | ||
if (timeStyle == NSDateFormatterTimeStyleNoMillis) { | ||
return @"HH:mm:ssZZ"; | ||
} | ||
return @"HH:mm:ss.SSSZZ"; | ||
|
||
case NSDateFormatterFormatOrdinalDate: | ||
if (timeStyle == NSDateFormatterTimeStyleTime) { | ||
return @"yyyy-DDD'T'HH:mm:ss.SSSZZ"; | ||
} else if (timeStyle == NSDateFormatterTimeStyleNoMillis) { | ||
return @"yyyy-DDD'T'HH:mm:ssZZ"; | ||
} | ||
return @"yyyy-DDD"; | ||
|
||
|
||
case NSDateFormatterFormatTTime: | ||
if (timeStyle == NSDateFormatterTimeStyleNoMillis) { | ||
return @"'T'HH:mm:ssZZ"; | ||
} | ||
return @"'T'HH:mm:ss.SSSZZ"; | ||
|
||
case NSDateFormatterFormatDateHourMinuteSecondFraction: | ||
if (timeStyle == NSDateFormatterTimeStyleNoMillis) { | ||
return @"yyyy-MM-dd'T'HH:mm:ss"; | ||
} | ||
return @"yyyy-MM-dd'T'HH:mm:ss.SSS"; | ||
|
||
case NSDateFormatterFormatWeekDate: | ||
if (timeStyle == NSDateFormatterTimeStyleTime) { | ||
return @"xxxx-'W'ww-e'T'HH:mm:ss.SSSZZ"; | ||
} else if (timeStyle == NSDateFormatterTimeStyleNoMillis) { | ||
return @"xxxx-'W'ww-e'T'HH:mm:ssZZ"; | ||
} | ||
return @"xxxx-'W'ww-e"; | ||
} | ||
return nil; | ||
} | ||
|
||
+ (instancetype)dateFormatterWithDateFormat:(NSDateFormatterFormat)format{ | ||
return [self.class dateFormatterWithDateFormat:format timeStyle:NSDateFormatterTimeStyleNone]; | ||
} | ||
|
||
+ (instancetype)dateFormatterWithDateFormat:(NSDateFormatterFormat)format timeStyle:(NSDateFormatterTimeStyle)timeStyle{ | ||
NSString *stringFormat = [self.class stringFormatForFormat:format timeStyle:timeStyle]; | ||
|
||
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; | ||
if (stringFormat != nil) { | ||
[formatter setDateFormat:stringFormat]; | ||
} | ||
return formatter; | ||
} | ||
|
||
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters