获取当前时间、星期等

  1. 获取当天星期,月份,年份
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDate *now = [NSDate date];
    NSDateComponents *componets = [[NSDateComponents alloc] init];
    NSInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday ;
    componets = [calendar components:unitFlags fromDate:now];

    NSInteger weekday = [componets weekday];

  1. 将NSDate 转换为 NSString
// 将NSDate 中的数据提取出来,组成字符串
// 第一步:日期对象
NSDate * nowDate = [NSDate date];
// 第二步:创建NSDateFormatter对象
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
// 第三步:设定日期转换的格式(提起数据的方式)
[formatter setDateFormat:@"yyyy/MM/dd"];  //yyyy 年 MM 月 dd 日
// eeee星期  MMMM大写月份  QQQQ季度  zzzz时区  hh:mm:ss 时:分:秒
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss eeee MMMM QQQQ zzzz" ];
// 第四步:转换
NSString * timeStr = [formatter stringFromDate:nowDate];
NSLog(@"%@",timeStr);
  1. 将NSString转换为NSDate:将NSString中包含的与日期有关的信息提取出来,创建NSDate对象
// 第一步:包含信息的字符串
NSString * timeStr = @"2014年05月01日 10点23分18秒";

// 第二步:创建NSDateFormatter对象
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];

// 第三步:设置日期转换格式(必须匹配)
[formatter setDateFormat:@"yyyy年MM月dd日 HH点mm分ss秒"];
//[formatter setDateFormat:@"yyyy年MM月dd日 hh点mm分ss秒"];

// 第四步:转换
// NSDate * date = [formatter dateFromString:timeStr];
NSDate * date = [formatter dateFromString:timeStr];
NSLog(@"%@", date);
  1. -------------计算时间间隔 在新闻时候应该可以用到--------------
NSDate * newTime = [NSDate date];
NSString * timeStr = @"2015-12-12 00:30:20";
NSDateFormatter * formater = [[NSDateFormatter alloc]init];
[formater setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate * date = [formater dateFromString:timeStr];
NSTimeInterval inter = [newTime timeIntervalSinceDate:date];
if (inter < 60 ) {
     NSLog(@"刚刚");
} else if (inter < 3600 && inter > 60){
     inter /= 60;
     NSLog(@"%f分钟前",inter);
} else if (inter > 3600 ){
     inter /= 3600;
     NSLog(@"%f小时前",inter);
}
  1. 获取当前的时间
    // 下面的第一个方法不提倡
//     NSDate *now1 = [[NSDate alloc]initWithTimeIntervalSinceNow:8*60*60];
//    NSLog(@"now %@",now1);
//

    NSDate * today = [NSDate date];
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    NSInteger interval = [zone secondsFromGMTForDate:today];

    NSDate *localeDate = [today dateByAddingTimeInterval:interval];
    // 时间转换成时间戳
    NSString *timeSp = [NSString stringWithFormat:@"%ld",(long)[localeDate timeIntervalSince1970]];
    NSLog(@"timeSp : %@", timeSp);
  1. 时间戳转换成时间类型(NSDate) 这个很久写的,有点乱,自己看吧
    时间戳转换成日期
    NSDate *currentTime = [NSDate dateWithTimeIntervalSince1970:[timeSp intValue]];
    NSLog(@"currentTime %@",currentTime);

    NSDateFormatter *dateformatter=[[NSDateFormatter alloc] init];
    [dateformatter setDateFormat:@"yyyy-MM-dd HH:MM:ss"];
    NSString * locationString=[dateformatter stringFromDate:currentTime];
     NSLog(@"LocationString %@",locationString);
//    -------------------------
    NSDate *currentTime2 = [NSDate date];
    NSLog(@"currentTime2 %@",currentTime2);
    NSString *timeSp2 = [NSString stringWithFormat:@"%ld",(long)[currentTime2 timeIntervalSince1970]];
    NSDate * current = [NSDate dateWithTimeIntervalSince1970:[timeSp2 intValue]];
    NSDateFormatter *dateformatter2=[[NSDateFormatter alloc] init];
    [dateformatter2 setDateFormat:@"yyyy-MM-dd HH:MM:ss"];
    NSString * locationString2 =[dateformatter2 stringFromDate:current];
     NSLog(@"LocationString2 %@",locationString2);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS开发中,经常会遇到各种各样的时间问题,8小时时差,时间戳,求时间间隔,农历等等。解决办法网上比比皆是,但大多...
    小李龍彪阅读 11,530评论 1 6
  • 在iOS开发中,经常会遇到各种各样的时间问题,8小时时差,时间戳,求时间间隔,农历等等。解决办法网上比比皆是,但大...
    真巧了_嘿阅读 7,760评论 0 7
  • 作者:gabriel theodoropoulos,原文链接,原文日期:2015-10-18译者:ray16897...
    梁杰_numbbbbb阅读 9,247评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,324评论 19 139
  • 2017.10.19 阴天 今天天气很好,不冷也不热,蜗牛家族很热闹,瞧!它们在干什么呢? 原来蜗牛们正在进行跑...
    大唐妮子阅读 2,761评论 2 3