在日常的开发中经常需要NSDate类型时间与NSString字符串类型时间进行相互转换,整理了一下NSDateFormatter 格式化参数,以及写了一个NSDate的分类方便在开发中使用。
NSDateFormatter 格式化参数如下:
G: 公元时代,例如AD元年
yy: 年的后两位
yyyy: 完整年
MM: 月,显示1~12
MMM: 月,显示为英文月份简写,如 Jan
MMMM: 月,显示为英文月份简写,如 Janualy
dd: 日,显示2为数,如 04
d: 日, 1-2位显示,如 4
EEE: 简写星期几,如 Sun
EEEE: 全写星期几,如 Sunday
aa: 上下午, AM/PM
H: 时, 1-2位显示, 24小时制, 0~23
HH: 时, 2位显示, 24小时制, 00~23
K: 时, 1-2位显示, 12小时制, 0~12
KK: 时, 2位显示, 12小时制, 00~12
m: 分, 1-2位显示, 0~59
mm: 分, 2为显示, 00~59
s: 秒, 1-2位显示, 0~59
ss: 秒, 2为显示, 00~59
S: 毫秒, 1-3为显示, 0~999
SSS: 毫秒, 3位显示, 000~999
NSDate分类 NSDate (Addition)
NSDate+Addition.h 文件
#import <Foundation/Foundation.h>
@interface NSDate (Addition)
/**
* 获取字符串类型时间, 时间格式: yyyyMMddHHmmss
*
* @param date NSDate类型时间
*
* @return 字符串类型时间
*/
+ (NSString *)stringFromDate:(NSDate *)date;
/**
* 获取字符串类型时间
*
* @param date NSDate类型时间
* @param format 时间格式
*
* @return 字符串类型时间
*/
+ (NSString *)stringFromDate:(NSDate *)date format:(NSString *)format;
/**
* 字符串时间转化为NSDate时间, 字符串默认格式为:yyyyMMddHHmmss
*
* @param string 字符串时间
*
* @return NSDate时间
*/
+ (NSDate *)dateFromString:(NSString *)string;
/**
* 字符串时间转化为NSDate时间
*
* @param string 字符串时间
* @param format 时间格式
*
* @return NSDate时间
*/
+ (NSDate *)dateFromString:(NSString *)string format:(NSString *)format;
/**
* 获得给定日期的月份
*/
+ (NSString *)getMonthFromDate:(NSDate *)date;
/**
* 获得给定日期的星期
*/
+ (NSString *)getWeekdayFromDate:(NSDate *)date;
@end
NSDate+Addition.m 文件
#import "NSDate+Addition.h"
@implementation NSDate (Addition)
+ (NSString *)stringFromDate:(NSDate *)date
{
return [self stringFromDate:date format:nil];
}
+ (NSString *)stringFromDate:(NSDate *)date format:(NSString *)format
{
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
if (!format) {
format = @"yyyyMMddHHmmss";
}
fmt.dateFormat = format;
return [fmt stringFromDate:date];
}
+ (NSDate *)dateFromString:(NSString *)string
{
return [self dateFromString:string format:nil];
}
+ (NSDate *)dateFromString:(NSString *)string format:(NSString *)format
{
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
if (!format) {
format = @"yyyyMMddHHmmss";
}
return [fmt dateFromString:string];
}
+ (NSString *)getMonthFromDate:(NSDate *)date
{
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"MMM";
return [fmt stringFromDate:date];
}
+ (NSString *)getWeekdayFromDate:(NSDate *)date
{
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"EEE";
return [fmt stringFromDate:date];
}
@end