iOS时间格式化遇到的坑

前言:最近做项目上传文件到腾讯云,在自己手上的真机上测试没有出现任何问题,提交测试后,也没出现任何问题,都可以上传到腾讯云。
可是从app store下载后,部分客户投诉上传不成功,提示以下错误信息:

-180 ERROR_CMD_COS_INVALID_PATH 非法路径

当时就蒙了,那么多测试机怎么都没问题,这么错误怎么找?只能去查查腾讯云提供的错误解决方案,然而只说了这么一条:


解决方案

好吧,还是自己去查代码:

//sign, bucket都是腾讯云提供的
//zipPath 为 (~/document/XXX.db.zip)
//remotePath是通过时间戳来生成的
TXYFileUploadTask *fileTask = [[TXYFileUploadTask alloc] initWithPath:zipPath
                                                                    sign:sign
                                                                  bucket:bucket
                                                         customAttribute:nil
                                                         uploadDirectory:remotePath
                                                              msgContext:nil];

获取remotePath的时间戳的代码如下:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYYMMddhhmmssSSS"];
NSString *date = [formatter stringFromDate:[NSDate date]];

仔细看看,唯一可能产生变化的是沙盒那个路径,先把问题定位在沙盒路径,与腾讯云定义的规范有冲突?公司测试机都又测不出问题,于是就联系朋友,纷纷下载使用,最终还是找到一个可以出现“非法路径”的真机,说多了都是泪。

省去测试流程,发现问题所在,就是格式化日期的坑,上面的时间戳的代码,运行一下:

错误显示

控制台居然显示:
格式化后字符串:2016060310:38:46.702

what happened!!! 居然没按时间格式的字符串格式化!!!出现了":",好了,这个就是问题所在,解决它的方案,设置formatter的区域:

解决方案

结果就按自己定义的格式显示了,再放入项目中,发现上传成功,OK!原来是区域的问题,好吧,我来看看到底原来到底是什么鬼区域,代码如下:

显示原来区域

Wow,居然是“zh_CN”,那为什么不按我们设置的格式格式化日期呢?非要强制设定区域之后才能正常格式化,百思不解!

设置区域在格式化时间中的重要性####

formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];

补充:对于这样的小问题,强烈推荐还是用JSPatch来修复。
JSPatch分发平台:http://jspatch.com/Apps/index
JSPatch转化平台:http://bang590.github.io/JSPatchConvertor/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,482评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,480评论 4 61
  • 一.安装ubuntu虚拟机 软件环境如下: | 终端类别及用途|操作系统 | 相关应用软件 ||--------|...
    zlzhang阅读 1,454评论 0 0

友情链接更多精彩内容