iOS時間戳記字串NSdate轉換demo
1 在項目中我們經常要做時間格式的轉換,以下是我封裝的NSDate+TimeCategory,希望協助到大家。
#import @interface NSDate (TimeCategory)/** * 字串轉NSDate * * @param theTime 字串時間 * @param format 轉化格式 如yyyy-MM-dd HH:mm:ss,即2015-07-15 15:00:00 * * @return <#return value description#> */+ (NSDate *)dateFromString:(NSString *)timeStr format:(NSString *)format;/** * NSDate轉時間戳記 * * @param date 字串時間 * * @return 返回時間戳記 */+ (NSInteger)cTimestampFromDate:(NSDate *)date;/** * 字串轉時間戳記 * * @param theTime 字串時間 * @param format 轉化格式 如yyyy-MM-dd HH:mm:ss,即2015-07-15 15:00:00 * * @return 返回時間戳記的字串 */+(NSInteger)cTimestampFromString:(NSString *)timeStr format:(NSString *)format;/** * 時間戳記轉字串 * * @param timeStamp 時間戳記 * @param format 轉化格式 如yyyy-MM-dd HH:mm:ss,即2015-07-15 15:00:00 * * @return 返回字串格式時間 */+ (NSString *)dateStrFromCstampTime:(NSInteger)timeStamp withDateFormat:(NSString *)format;/** * NSDate轉字串 * * @param date NSDate時間 * @param format 轉化格式 如yyyy-MM-dd HH:mm:ss,即2015-07-15 15:00:00 * * @return 返回字串格式時間 */+ (NSString *)datestrFromDate:(NSDate *)date withDateFormat:(NSString *)format;@end
#import NSDate+TimeCategory.hstatic NSDateFormatter *dateFormatter;@implementation NSDate (TimeCategory)+(NSDateFormatter *)defaultFormatter{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ dateFormatter = [[NSDateFormatter alloc]init]; }); return dateFormatter;}+ (NSDate *)dateFromString:(NSString *)timeStr format:(NSString *)format{ NSDateFormatter *dateFormatter = [NSDate defaultFormatter]; [dateFormatter setDateFormat:format]; NSDate *date = [dateFormatter dateFromString:timeStr]; return date;}+ (NSInteger)cTimestampFromDate:(NSDate *)date{ return (long)[date timeIntervalSince1970];}+(NSInteger)cTimestampFromString:(NSString *)timeStr format:(NSString *)format{ NSDate *date = [NSDate dateFromString:timeStr format:format]; return [NSDate cTimestampFromDate:date];}+ (NSString *)dateStrFromCstampTime:(NSInteger)timeStamp withDateFormat:(NSString *)format{ NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeStamp]; return [NSDate datestrFromDate:date withDateFormat:format];}+ (NSString *)datestrFromDate:(NSDate *)date withDateFormat:(NSString *)format{ NSDateFormatter* dateFormat = [NSDate defaultFormatter]; [dateFormat setDateFormat:format]; return [dateFormat stringFromDate:date];}
2調用
#import NSDate+TimeCategory.h
- (IBAction)strToDate:(id)sender { NSString *timeStr = @2015-07-15 15:00:00; NSDate *date = [NSDate dateFromString:timeStr format:@yyyy-MM-dd HH:mm:ss]; NSLog(@字串轉NSDate:%@ -> %@,timeStr,date);}
- (IBAction)dateToStamp:(id)sender { NSDate *date = [NSDate date]; NSInteger stamp = [NSDate cTimestampFromDate:date]; NSLog(@NSDate轉時間戳記:%@ ->%ld,date,stamp);}
- (IBAction)strToStamp:(id)sender { NSString *timeStr = @2015-07-15 15:00:00; NSInteger stamp = [NSDate cTimestampFromString:timeStr format:@yyyy-MM-dd HH:mm:ss]; NSLog(@字串轉時間戳記:%@ -> %ld,timeStr,stamp);}
- (IBAction)stampToStr:(id)sender { NSInteger stamp = 1436943600; NSString *timeStr = [NSDate dateStrFromCstampTime:stamp withDateFormat:@yyyy-MM-dd HH:mm:ss]; NSLog(@時間戳記轉字串:%ld ->%@,stamp,timeStr);}
- (IBAction)dateToStr:(id)sender { NSDate *date = [NSDate date]; NSString *timeStr = [NSDate datestrFromDate:date withDateFormat:@yyyy-MM-dd HH:mm:ss]; NSLog(@NSDate轉字串:%@ ->%@,date,timeStr);}
分別得到以下結果
2015-07-13 15:02:07.662 TimeDemo[2780:89582] 字串轉NSDate:2015-07-15 15:00:00 -> 2015-07-15 07:00:00 +0000
2015-07-13 15:02:14.653 TimeDemo[2780:89582] NSDate轉時間戳記:2015-07-13 07:02:14 +0000 ->1436770934
2015-07-13 15:02:20.077 TimeDemo[2780:89582] 字串轉時間戳記:2015-07-15 15:00:00 -> 1436943600
2015-07-13 15:02:22.957 TimeDemo[2780:89582] 時間戳記轉字串:1436943600 ->2015-07-15 15:00:00
2015-07-13 15:02:25.901 TimeDemo[2780:89582] NSDate轉字串:2015-07-13 07:02:25 +0000 ->2015-07-13 15:02:25