时间戳相关

作者: Karen_ | 来源:发表于2015-11-28 17:16 被阅读246次

    时间戳

    皆为整理所得 如有错误请批评指正 共同学习 谢过
    Date不是Data Date不是Data Date不是Data 重要的事说三遍

    网络请求的时间戳一般分为两种
    * 年月日字符串
    * 秒数 [计算当年时间距离1970年1月1日的秒数]

    一般我们常遇到的问题就是13位时间戳转换、格式化时间以及截取时间
    如果碰到13位时间戳要除以1000哦 [字符串13 转时间]

        NSString * timeStampString = @"1448697828";
        NSDate *date = [NSDate dateWithTimeIntervalSince1970:[timeStampString doubleValue] / 1000];
        NSLog(@"%.f", ([date timeIntervalSince1970] * 1000.0));
    

    只要20150206的话[时间戳转时间]

    NSString * timeStampString = @"1423189125873";
        NSTimeInterval _interval=[timeStampString doubleValue] / 1000.0;
        NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interval];
        NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init];
        [objDateformat setDateFormat:@"yyyyMMdd"];
        NSLog(@"%@", [objDateformat stringFromDate: date]);
    

    另:相对于NSDateFormatter 还有一种方法 结果:2015-11-28 00:00:00 +0000

    - (NSDate *)extractDate:(NSDate *)date {
    //get seconds since 1970
     NSTimeInterval interval = [date timeIntervalSince1970];
      int oneDay = 24 * 60 * 60;
      //calculate integer type of days
     NSInteger allDays = interval / oneDay;
      return [NSDate dateWithTimeIntervalSince1970:allDays * oneDay];
    }
    

    20151128是周几

    NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setDay:28];
    [comps setMonth:11];
    [comps setYear:2015];
    NSCalendar *gregorian = [[NSCalendar alloc]
        initWithCalendarIdentifier:NSGregorianCalendar];
    NSDate *date = [gregorian dateFromComponents:comps];
    [comps release];
    NSDateComponents *weekdayComponents =
        [gregorian components:NSWeekdayCalendarUnit fromDate:date];
    int weekday = [weekdayComponents weekday];
    NSLog(@"%d",weekday);
    

    距离某个时间戳有多长时间
    输出:From Now to 2016-01-19 07:38:45 +0000, diff: Years: 0 Months: 1, Days; 21, Hours: 22, Mins:39, sec:47
    通过该方法可以判断消息发送时间

    NSDate* toDate   = [ [ NSDate alloc] initWithTimeIntervalSince1970:1453189125];
        NSDate*  startDate  = [ [ NSDate alloc] init ];
        NSCalendar* chineseClendar = [ [ NSCalendar alloc ] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
        NSUInteger unitFlags =
        NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear;
        NSDateComponents *cps = [chineseClendar components:unitFlags fromDate:startDate  toDate:toDate  options:0];
        NSInteger diffHour = [cps hour];
        NSInteger diffMin    = [cps minute];
        NSInteger diffSec   = [cps second];
        NSInteger diffDay   = [cps day];
        NSInteger diffMon  = [cps month];
        NSInteger diffYear = [cps year];
        NSLog(  @" From Now to %@, diff: Years: %ld  Months: %ld, Days; %ld, Hours: %ld, Mins:%ld, sec:%ld",[toDate description], diffYear, (long)diffMon, (long)diffDay, (long)diffHour, (long)diffMin,(long)diffSec );
    

    控件上只能放字符串 无法将NSDate显示在控件上 所以 用 NSDateFormatter

    1. 格式化时间去掉时区并转换为字符串
     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        NSDate *date = [NSDate date];
        NSLog(@"%@",date); // 2015-11-28 07:17:23 +0000
        NSString *str = [formatter stringFromDate:date];
        NSLog(@"%@",str); // 2015-11-28 15:17:23
    

    ** HH24小时制 hh12小时制

    1. 当前日期转换为时间戳
     NSDate *datenow = [NSDate date];
         NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[datenow timeIntervalSince1970]];
        NSLog(@"timeSp:%@",timeSp); // timeSp:1448697828
    

    此处请参考 enter link description here
    输出格式通setDateStyle和setTimeStyle设置,分别定义的日期和时间的格式可选一下的系统给出的方法

    typedef enum {
        NSDateFormatterNoStyle     = kCFDateFormatterNoStyle,
        NSDateFormatterShortStyle  = kCFDateFormatterShortStyle,//“11/23/37” or “3:30pm”
        NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle,//\"Nov 23, 1937\"
        NSDateFormatterLongStyle   = kCFDateFormatterLongStyle,//\"November 23, 1937” or “3:30:32pm\"
        NSDateFormatterFullStyle   = kCFDateFormatterFullStyle//“Tuesday, April 12, 1952 AD” or “3:30:42pm PST”
    } NSDateFormatterStyle;
    

    相关文章

      网友评论

      本文标题:时间戳相关

      本文链接:https://www.haomeiwen.com/subject/udndhttx.html