NSDate 格式化 及 互转

/*
 NSDateFormatter的作用
 1.NSString -> NSDate
 2.NSDate -> NSString
 */
void fmt_date_to_string();
void fmt_string_to_date();
void fmt_string_to_date2();
void fmt_timestamp_to_date3();

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // 2015-10-01 14:38:40
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
        NSDate *createdAtDate = [fmt dateFromString:@"2015-9-15 23:59:59"];
        
        NSCalendar *calendar = [NSCalendar currentCalendar];
        NSLog(@"%d", [calendar isDateInTomorrow:createdAtDate]);
    }
    return 0;
}

void calendar_interval_between_date()
{
    // 获得系统当前时间
    NSDate *nowDate = [NSDate date];
    
    // 服务器返回的时间字符串
    NSString *createdAtString = @"2014-02-20 10:49:54";
    // 创建一个日期格式化对象
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    // 设置日期格式
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    // NSString -> NSDate
    NSDate *createdAtDate = [fmt dateFromString:createdAtString];
    
    // 计算createdAtDate和nowDate的时间间隔
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
    NSDateComponents *cmps = [calendar components:unit fromDate:createdAtDate toDate:nowDate options:0];
    NSLog(@"%@", cmps);
}

/**
 *  获得某个NSDate对象的所有日期元素 : 年月日时分秒
 */
void get_components_of_date()
{
    // 获得系统当前时间
    NSDate *nowDate = [NSDate date];
    
    // 日历对象
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
    NSDateComponents *cmps = [calendar components:unit fromDate:nowDate];
    NSLog(@"%@", cmps);
    
    //        NSInteger year = [calendar component:NSCalendarUnitYear fromDate:nowDate];
    //        NSInteger minute = [calendar component:NSCalendarUnitMinute fromDate:nowDate];
    //        NSLog(@"%zd %zd", year, minute);
    
    //        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    //        // 设置日期格式
    //        fmt.dateFormat = @"HH";
    //        NSString *string = [fmt stringFromDate:nowDate];
    //        NSLog(@"%@", string);
}

/**
 *  2个NSDate之间的时间差值
 */
void date_interval()
{
    // 获得系统当前时间
    NSDate *nowDate = [NSDate date];
    
    // 服务器返回的时间字符串
    NSString *createdAtString = @"2015-10-16 10:49:54";
    // 创建一个日期格式化对象
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    // 设置日期格式
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    // NSString -> NSDate
    NSDate *createdAtDate = [fmt dateFromString:createdAtString];
    
    // 计算createdAtDate和nowDate之间相隔的秒数
    NSTimeInterval interval = [nowDate timeIntervalSinceDate:createdAtDate];
    NSLog(@"%f", interval);
    // 3600 / 60 = 60
    // 60 /60 = 1
}

/**
 *  timestamp -> NSDate
 */
void fmt_timestamp_to_date3()
{
    // 时间戳 : 从1970年1月1日0点0分0秒开始经历的毫秒数
    NSInteger timestamp = 1114548435435;
    
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:timestamp / 1000.0];
    
    NSLog(@"%@", date);
}

/**
 *  NSString -> NSDate
 */
void fmt_string_to_date2()
{
    // 服务器返回的时间字符串
    NSString *string = @"Tue May 31 17:46:55 +0800 2011";
    
    // 创建一个日期格式化对象
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    // 解析欧美格式的日期字符串, 得设置语言类型为en_US
    fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    
    // 设置日期格式
    fmt.dateFormat = @"EEE MMM dd HH:mm:ss ZZZZ yyyy";
    
    NSDate *date = [fmt dateFromString:string];
    
    NSLog(@"%@", date);
}

/**
 *  NSString -> NSDate
 */
void fmt_string_to_date()
{
    // 服务器返回的时间字符串
    NSString *string = @"2015-10-16 10:49:54";
    
    // 创建一个日期格式化对象
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    
    // 设置日期格式
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    
    NSDate *date = [fmt dateFromString:string];
    
    NSLog(@"%@", date);
}

/**
 *  NSDate -> NSString
 */
void fmt_date_to_string()
{
    // 获得系统当前时间
    NSDate *now = [NSDate date];
    
    // 创建一个日期格式化对象
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    
    // 设置日期格式 : 2015年10月10日 15时56分30秒
    // 年(year) : y
    // 月(month) : M
    // 日(day) : d
    // 时(hour) : H(24小时制)\h(12小时制)
    // 分(minute) : m
    // 秒(second) : s
    // 时区(zone) : Z
    
    fmt.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒";
    
    // NSDate -> NSString
    NSString *nowString = [fmt stringFromDate:now];
    
    NSLog(@"----- %@", nowString);
}

 

posted @ 2015-10-28 17:29  吃饭了吗  阅读(363)  评论(0编辑  收藏  举报