判断当前时间是否在一天的某个时间段内,可设置时,分,秒

本文详细介绍了如何在苹果iOS系统中进行时间与日期的操作,包括获取当前系统时间、转换为本地时间、判断时间是否在指定时间段内,并提供了一系列与时间日期相关的API和方法的使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSDateComponents *fromDateComponents = [[NSDateComponents alloc]init];
    NSDateComponents *toDateComponents = [[NSDateComponents alloc]init];
    [fromDateComponents setHour:6];        // 开始时间-小时
    [toDateComponents setHour:18];         // 结束时间-小时
    [toDateComponents setMinute:58];       // 结束时间-分钟
    
    
    [self isBetweenFromDateComponents:fromDateComponents toComponents:toDateComponents];
    
}

/**
 *  转化为系统当前地区时间
 *
 *  @param date 系统时间
 *
 *  @return 系统当前地区时间
 */
- (NSDate *)convertSystemLocationDate:(NSDate *)date
{
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    NSTimeInterval interval = [zone secondsFromGMTForDate:date];
    return [date dateByAddingTimeInterval:interval];
}

/**
 *  获取当前时间是否在设置的某一个时间段内
 *
 *  @param fromComponents 开始时间
 *  @param toComponents   结束时间
 *
 *  @return BOOL
 */
- (BOOL)isBetweenFromDateComponents:(NSDateComponents*)fromComponents toComponents:(NSDateComponents *)toComponents
{
    NSDate *fromDate = [self getCustomDateeWithDateComponents:fromComponents];
    NSDate *toDate = [self getCustomDateeWithDateComponents:toComponents];

    // 获取当前时间
    NSDate *currDate = [NSDate date];
    if ([[self convertSystemLocationDate:currDate] compare:fromDate]== NSOrderedDescending && [[self convertSystemLocationDate:currDate] compare:toDate] == NSOrderedAscending)
    {
        return YES;
    }
    return NO;
}

/**
 *  根据设置的时间返回一个NSDate类型的时间
 *
 *  @param dateComponents NSDateComponents
 *
 *  @return NSDate
 */
- (NSDate *)getCustomDateeWithDateComponents:(NSDateComponents *)dateComponents
{
    //获取当前时间
    NSDate *currentDate = [NSDate date];
    NSCalendar *currentCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *currentComps = [[NSDateComponents alloc] init];
    
    NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
    
    currentComps = [currentCalendar components:unitFlags fromDate:currentDate];
    
    //设置当天的某个点
    NSDateComponents *resultComps = [[NSDateComponents alloc] init];
    [resultComps setYear:[currentComps year]];
    [resultComps setMonth:[currentComps month]];
    [resultComps setDay:[currentComps day]];
    [resultComps setHour:[dateComponents hour]];
    [resultComps setMinute:[dateComponents minute]];
    
    NSCalendar *resultCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

    NSDate *resultDate = [self convertSystemLocationDate:[resultCalendar dateFromComponents:resultComps]];
    
    return resultDate;
}

 

转载于:https://www.cnblogs.com/joesen/p/4447780.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值