iOS时间格式化遇到的坑
**前言:**最近做項目上傳文件到騰訊云,在自己手上的真機上測試沒有出現任何問題,提交測試后,也沒出現任何問題,都可以上傳到騰訊云。 可是從app store下載后,部分客戶投訴上傳不成功,提示以下錯誤信息:
-180 ERROR_CMD_COS_INVALID_PATH 非法路徑
當時就蒙了,那么多測試機怎么都沒問題,這么錯誤怎么找?只能去查查騰訊云提供的錯誤解決方案,然而只說了這么一條:
好吧,還是自己去查代碼:
//sign, bucket都是騰訊云提供的 //zipPath 為 (~/document/XXX.db.zip) //remotePath是通過時間戳來生成的 TXYFileUploadTask *fileTask = [[TXYFileUploadTask alloc] initWithPath:zipPathsign:signbucket:bucketcustomAttribute:niluploadDirectory:remotePathmsgContext: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/
轉載于:https://juejin.im/post/5a3c80d5f265da430f3248b0
總結
以上是生活随笔為你收集整理的iOS时间格式化遇到的坑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea 整合SSM(spring sp
- 下一篇: 安卓判断前后台