首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS|一个与 NSDateFormatter 有关的小 Bug

我们的 iOS APP 有一个小 Bug,场景简化是这样: 接口返回一个时间字符串,APP 里比较它与当前时间,如果当前时间晚于它,就显示一个按钮,否则不显示。...分析 结合用户反馈的信息,经过多次尝试,才发现这个行为竟然与用户手机的时间制式有关——如果用户手机设置里的 24小时制 开关没有打开,那么这个 Bug 就会出现。...:dateStr]; } 经过调试,发现 remoteDate 在 24小时制 开关关闭时,返回的是 nil,而在打开时,返回的是正确的时间。...If dateFromString: can’t parse the string, returns nil....:dateStr]; } 经过测试功能正常了,不管用户手机的 24小时制 开关是否打开,都能正常解析服务端返回的时间字符串了。

11110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    DateTools,可能是最好用的iOS日期工具库

    , (long)oldYear, (long)newYear); // 输出: oldYear: 2015 newYear: 2016 日期比较 DateTools 提供下列方法,比较两个日期的大小,返回结果为一个布尔值...YES,如果有起始时间. hasEndDate - 返回YES,如果有结束时间. isMoment - 返回YES,如果起始时间和结束时间相同. durationIn.... - 返回指定单位下时间段的长度...[chain addTimePeriod:firstPeriod]; // 如果存入的时间和前一个存入的时间无法前后完全衔接,则一个时间会适当前移或后移,以使前后时间段紧凑....addTimePeriod:secondPeriod]; // 获取集合中的元素. firstPeriod = chain[0]; 新加入的时间段,时长不变,起始时间变为前一个时间段的结束时间,结束时间对应前移后移...其后的时间段相应后移.在零位置插入的时间,集合的起始时间前移.操作图解如下: 操作 像 DTTimePeriodCollection 一样, DTTimePeriodChain 也可以进行相等性比较,并且也可以前移后移

    1.6K100

    OC知识--Foundation框架详尽总结之『数字、结构体、日期、文件类』

    NSDate NSDate可以用来表示时间,可以进行一些常见的日期\时间处理 一个NSDate对象就代表一个时间 [NSDate date]返回的就是当前时间,注意此时间是世界标准时间,准确时间应加上当前时区与世界标准时间的偏移量...NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSDate *date = [formatter dateFromString...NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSDate *date1 = [formatter dateFromString...:time1]; NSDate *date2 = [formatter dateFromString:time2]; // 创建日历 NSCalendar *calendar = [NSCalendar...; NSDictionary *dict = [manager attributesOfItemAtPath:@"/Users/Walkers/Desktop/test.txt" error:nil

    59540

    iOS小技能:封装银联接口协议(收银台的订单退款、查询机制)【下篇】

    I 返回结果处理 1、申请退款成功,立马创建处理中的本地数据 2、退款查询,根据查询状态修改订单状态 数据按XML的格式实时返回 字段名 变量名 必填 类型 说明 版本号 version 是 String...网关返回码 code 否 String(32) 网关返回码 以下字段在 status 为 0的时候有返回 业务结果 result_code 是 String(16) 0表示成功,非0表示失败注...,再判断业务返回,最后判断交易状态 1、返回状态码(status)参数:0表示调用成功;非0表示调用失败。...dateFormatter setDateFormat:Formatter]; NSDate *startDate = [dateFormatter dateFromString...:start]; NSDate *endDate = [dateFormatter dateFromString:end]; NSTimeInterval time =

    78350

    六天完成一个简单iOS App - 第四天

    同时上拉和下拉出现的问题 当我们下拉刷新的时候,在数据还没有返回刷新成功的时候,又滑动到底部上拉加载了新数据,此时就会造成数据混乱,如果上拉加载更多的数据已经返回,此时下拉刷新的数据也返回了,就只剩下最新的数据了...当然两种分页方法影响并不大,要根据服务器返回的数据,确定分页请求方法。...NSString *)created_at { fmt_.dateFormat = @"yyyy-MM-dd HH-mm-ss"; NSDate *createdAtDate = [fmt_ dateFromString...stringFromDate:self]; NSString *nowStr = [fmt stringFromDate:[NSDate date]]; NSDate *creatDate = [fmt dateFromString...:creatStr]; NSDate *nowDate = [fmt dateFromString:nowStr]; NSCalendar *calendar = [NSCalendar

    1.4K70

    YYModel 源码剖析:关注性能

    return nil; } 这里的转换处理的主要是 NSString 到 NSNumber 的转换,由于服务端返回给前端的 bool 类型、空类型多种多样,这里使用了一个 hash 将所有的情况作为 key..."EEE MMM dd HH:mm:ss.SSS Z yyyy"; blocks[30] = ^(NSString *string) { return [formatter dateFromString...:string]; }; blocks[34] = ^(NSString *string) { return [formatter2 dateFromString:string]...实际上这也是 hash 思想,当传入有效时间格式的 NSString 对象时,通过其长度就能直接取到 blocks 数组中的闭包对象,调用闭包传入该字符串就能直接得到转换的 NSDate 对象。...同样是 YYModel 协议下的方法:modelContainerPropertyGenericClass,返回了一个自定义的容器与内部元素的 hash。

    2.1K80

    React Native 系统日历插件

    另外,这些博文都是来源于我日常开发中的技术总结,在时间允许的情况下,我会针对技术点分别分享iOS、Android两个版本,如果有其他技术点需要,可在文章留言,我会尽全力帮助大家。...NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; NSDate *start = [dateFormatter dateFromString...:[NSString stringWithFormat:@"%@",calendarDic[@"startDate"]]]; NSDate *end = [dateFormatter dateFromString...实现系统日历事件查询 系统日历事件查询需要调用CalendarManager类中的checkBlock方法,返回backDic字典,其中包括日历事件的详情。...实现系统日历事件移除 系统日历事件移除需要调用CalendarManager类中的checkBlock方法,返回backDic字典,其中包括日历事件的详情。

    2.8K10

    文心一言 VS 讯飞星火 VS chatgpt (114)-- 算法导论10.2 7题

    由于我们需要在更改指针之前保存下一个节点,所以我们需要在更改指针之前将当前节点的Next指针保存到临时变量中。...在更改指针,我们将当前节点和下一个节点向后移动,因此我们可以在O(1)的空间中反转链表。这个函数的时间复杂度是O(n),因为它需要遍历链表的每个节点。...reverseList 函数接受一个链表的头节点作为参数,并返回逆转的链表的头节点。 在 reverseList 函数中,我们使用了一个前置节点 prev,初始值为 nil。...当我们完成循环时,prev指针将指向逆转的链表的头节点。我们返回prev指针,这就是逆转的链表的头节点。 注意,这个程序使用了常数大小的额外空间。...最后返回逆转的链表的头节点。 在main函数中,创建了一个示例链表,并调用reverseList函数对其进行逆转。最后调用displayList函数来打印原链表和逆转链表的值,以验证结果。

    17530

    go 学习笔记之学习函数式编程前不要忘了函数基础 原

    nil;如果异常返回,第一个返回值设计无意义的特殊值,第二个返回值是具体的错误信息,一般非 nil. func evalWithStandardStyle(a, b int, op string) (...error) { return func() (int, error) { return op(a, b) } } 上述函数看起来可能有点难以理解,实际上相对于上例仅仅更改返回值...,由原来的 (int, error) 更改成 func() (int, error) ,其余均保持不变哟!...= nil { t.Log("Error:", err) } else { t.Log("Success:", result) } } 函数别名进行类型化并不影响功能...水到渠成的闭包 函数的参数,返回值都可以是另外的函数,函数也可以作为引用那样传递给变量,也存在匿名函数等简化形式,除此之外,类型化的函数还可以用来实现接口等等特性应该足以阐释一等公民的高贵身份地位了吧

    56040

    iOS-Foundation框架中常用的类

    当在内存中创建1个字符串对象以后,这个字符串对象的内容就无法更改,当我们重新为字符串指针初始化值的时候,并不是修改原来的字符串对象,而是重新的创建1个字符串对象并将这个字符串对象的地址重新复制给字符串指针变量...所以,判断主字符串中是否包含子字符串,只需要判断返回的NSRange结构体变量的length是否为0就可以。 在主串中搜索子串.从往前搜索. 第1次匹配的子串....:(NSString *)target withString:(NSString *)replacement 将字符串中第1个参数替换为第2个参数.原来的指针指向字符串的内容是不会变的,新串是以方法的返回返回的...因此NSArray中不能存储nil,会将nil作为元素结束的标志,并且NSArray中只能存储OC对象,而nil等于0为基本数据类型。...str); NSDate提供了日期类型与字符串相互转换的方法 - (NSString *)stringFromDate:(NSDate *)date; //将日期类型换换为字符串 - (NSDate *)dateFromString

    1.7K100

    从 io.Reader 中读数据

    一次最多读取len(p)长度的数据 读取遭遇到error(io.EOF或者其它错误), 会返回已读取的数据的字节数和error 即使读取字节数< len(p),也不会更改p的大小 (显然的,因为正常它也没办法更改...) 当输入流结束时,调用它可能返回 err == EOF 或者 err == nil,并且n >=0, 但是下一次调用肯定返回 n=0, err=io.EOF 常常使用这个方法从输入流中批量读取数据,直到输入流读取到头...注意成功的读取完输入流err并不是io.EOF, 而是nil。...成功的读取到头不会返回io.EOF, 而是返回数据和nil。 我们经常用它来读取可信的http.Response.Body。...读取到0字节,并且遇到EOF, 返回EOF 读取到0<n<len(buf)字节,并且遇到EOF, 返回ErrUnexpectedEOF 读取到n==len(buf),即使遇到error也返回err=nil

    2.3K20
    领券