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);
}
时间: 2025-01-02 06:53:38

NSDate 格式化 及 互转的相关文章

NSDate 格式化、转换与比较

关于日期在iOS开发的应用,大多数需求都和日期与NSString相互转换相关,最多会用到两个日期的比较,我就只记录下这几种情况的解决方法: 1.NSDate转字符串 //实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; //设置格式 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //用[NSDate

NSDate 格式化 NSDate to NSString

NSLog(@"%@",[NSDate stringFromDate:[NSDate date] withFormat:@"yyyyMMdd__HH_mm_ss_zzz"]); 输出结果为: 2015-09-15 17:08:08.720 IconMaker[23584:592901] 20150915__17_08_08_GMT+8

NSString 常见数据类型转换:转NSInteger , NSDate(互转)

1. NSString转NSInteger, 转int (float, double类似 ) 1.1正常情况 , NSString所包含内容确能转化为int的类型 NSString *sNumber = @"123"; NSInteger lNumber = [sNumber integerValue]; int iNumber = [sNumber intValue]; NSLog(@"字符串NSString: %@\n转换后-->\n长整型(64bit long):

ios开发之NSDateFormatter,NSDate 与NSString日期转换,NSString任意格式互转

一般用java+oracle写的后台,可能给你返回的时间样式是这样的: 2014-01-20  13:24:33 看一下这个时间串是比较复杂,但是ios 的SDK已经为我们封装好了,把NSString 转换为 任意的NSDate 或者 NSString 使用NSDateFormatter 实现 + (NSString *)timeFromString:(NSString *)timeString { NSDateFormatter *formatter = [[NSDateFormatter a

Objective -C NSDate、Category   、Extension、Protocol

NSDate的使用 NSDate是Cocoa中用于处理日期和时间的基础类,封装类某一给定的时刻,具体的日期,时间和时区 使用+date方法获取当前日期和时间 例如  :NSDate*nowDate = [NSDate date]: 注意,,NSLog(@"%@",nowDate): 无论你是哪个时区的时间,打印时间,打印时总是打印对应的0时区时间 NSTimeinterval NSTimeInterval(即double类型) 用以表示以秒为单位的时间间隔 可以使用-initWithT

OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于Java中的自动装箱和拆箱,Java中的集合其实也是不允许存入基本类型的,但是我们任然看可以那么操作,就是因为有自动装箱功能,如果你将Eclipse的JDK改成5.0之前的,你看看还能操作吗.. 注:那为什么基本类型不能存入到集合中呢? 原因是在操作集合的时候会操作集合元素中的方法,但是基本类型是没有

iOS开发-OC篇-NSDate

今天总结一下OC中NSDate的一些简单的用法,注意可不是NSData哦! NSDate的使用 1> NSDate初始化方法 //获取当前时间 NSDate * date = [NSDate date]; //返回以当前时间为基准,然后过了secs秒的时间 [NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24]; //返回以lastDate为基准,然后过了secs秒的时间 [NSDate dateWithTimeInterval:60 * 60 *

supersr--时间显示逻辑-->NSDate+NSCalendar

- (NSString *)created_at{ //    从后台返回的字符串格式:Mon Aug 03 09:17:31 +0800 2014, //NSDateFormatter可以把NSDate转成字符串,也可以把字符串转成NSDate //初始化一个时间格式化器 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; //指定时间格式化字符串-->是一个什么样的格式 formatter.dateFormat = @&quo

NSDate 使用

NSDate *date = [NSDate date]; //日期格式化类 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; //y年 M月 d日 //m分 s秒 H(24)时 h(12)时 //2015-08-15 22:30:30 formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSString *str = [formatter stringFromDate:d