Rumah  >  Soal Jawab  >  teks badan

objective-c - ios 如何获取当天6点的时间戳

如题
如何获取当天某一时刻的时间戳呢?

PHP中文网PHP中文网2741 hari yang lalu248

membalas semua(2)saya akan balas

  • 黄舟

    黄舟2017-04-17 18:00:14

    NSCalendar *greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    
    NSTimeZone *timeZone = [[NSTimeZone alloc] initWithName:@"Asia/Shanghai"];
    [greCalendar setTimeZone: timeZone];
    
    NSDateComponents *dateComponents = [greCalendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit  fromDate:[NSDate date]];
    
    //  定义一个NSDateComponents对象,设置一个时间点
    NSDateComponents *dateComponentsForDate = [[NSDateComponents alloc] init];
    [dateComponentsForDate setDay:dateComponents.day];
    [dateComponentsForDate setMonth:dateComponents.month];
    [dateComponentsForDate setYear:dateComponents.year];
    [dateComponentsForDate setHour:23];
    [dateComponentsForDate setMinute:59];
    
    NSDate *dateFromDateComponentsForDate = [greCalendar dateFromComponents:dateComponentsForDate];
    return dateFromDateComponentsForDate;
    

    这个是获取当天北京时区的23:59分,你把你要获取的时间修改一下就行了,时间戳的话,把时区改为零时区就行了,能解决你的问题吗?

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-17 18:00:14

    你好 您说的这个方法不能获取到当天北京时区的 23:59 分的日期,你虽然已经设置了时区, 并且设置了小时和分钟, 但是还是不能获取到当天0点和 23 点 59 分钟的日期时间, 是否我自己用你的代码有什么不对的地方, 请指出 谢谢

    我后来找的方法是: 不用设置时区,直接设置小时为8 小时, 这样可以获取

    // 创建日历
    NSCalendar *calendar = [NSCalendar currentCalendar];
        
        // 初始化日历组件
        NSDateComponents *dateComponents = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:[NSDate date]];
        
        [dateComponents setYear:dateComponents.year];
        [dateComponents setMonth:dateComponents.month];
        [dateComponents setDay:dateComponents.day];
        [dateComponents setHour:8];    // 设置为为8 时
        
        NSDate *timeDate = [calendar dateFromComponents:dateComponents];
        
        // 从0 点开始24 小时之后的时间
        NSDate *end = [timeDate dateByAddingTimeInterval:24 * 3600];
        
        WZLog(@"获取的时间为 = %@", timeDate);

    你好, 你的方法是正确的, 我说的这个只是显示的是当前正确的时间, 当时转换为时间戳之后其实不是正确的, 不好意思 , 是我弄错了

    balas
    0
  • Batalbalas