#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface NSDate (Formatter)
- (NSDate *)zeroOfDate;
- (NSString *)formatDateString;
- (NSInteger)getYear;
- (NSInteger)getMonth;
- (NSInteger)getDay;
+ (NSString *)currentDateString;
+ (NSString *)formatDate:(NSString *)dateStr withFormatString:(NSString *)formatStr;
@end
NS_ASSUME_NONNULL_END
#import "NSDate+Formatter.h"
@implementation NSDate (Formatter)
//今天零点的时间
- (NSDate *)zeroOfDate {
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSUIntegerMax fromDate:self];
components.hour = 0;
components.minute = 0;
components.second = 0;
// components.nanosecond = 0 not available in iOS
NSTimeInterval ts = (double)(int)[[calendar dateFromComponents:components] timeIntervalSince1970];
return [NSDate dateWithTimeIntervalSince1970:ts];
}
- (NSString *)formatDateString {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSString *currentTimeString = [formatter stringFromDate:self];
return currentTimeString;
}
//日期的年月日
- (NSInteger)getYear {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY"];
NSString *currentTimeString = [formatter stringFromDate:self];
return currentTimeString.integerValue;
}
- (NSInteger)getMonth {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM"];
NSString *currentTimeString = [formatter stringFromDate:self];
return currentTimeString.integerValue;
}
- (NSInteger)getDay {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd"];
NSString *currentTimeString = [formatter stringFromDate:self];
return currentTimeString.integerValue;
}
//当前时间
+ (NSString *)currentDateString {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSDate *datenow = [NSDate date];
NSString *currentTimeString = [formatter stringFromDate:datenow];
return currentTimeString;
}
//格式化时间
// in Mar 20, 2019 2:40:00 PM
// out 2019-01-01 00:00:00
+ (NSString *)formatDate:(NSString *)dateStr withFormatString:(NSString *)formatStr {
NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMM dd, yyyy hh:mm:ss aa"];
[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Shanghai"]];
[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
NSDate *date =[dateFormat dateFromString:dateStr];
NSDateFormatter* dateFormat2 = [[NSDateFormatter alloc] init];
// 2018-04-16 20:14:13 formatStr
[dateFormat2 setDateFormat:formatStr];
NSString *publishtimeStr = [dateFormat2 stringFromDate:date];
return publishtimeStr;
}
@end
使用
NSString *currentDateString = [NSDate currentDate];
NSString *dateString = [NSDate formatDate:@"Mar 20, 2019 0:00:00 PM" withFormatString:@"yyyy-MM-dd hh:mm:ss"];