偶然翻看AliyunOSSSDK源码的时候,发现NSDate+OSS.h中NSDate和NSString相互转换的源码如下:
NSString * const serverReturnDateFormat = @"EEE, dd MMM yyyy HH:mm:ss z";
+ (NSDate *)oss_dateFromString:(NSString *)string {
NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.timeZone = [NSTimeZone timeZoneWithName:@"GMT"];
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US"];
dateFormatter.dateFormat = serverReturnDateFormat;
return [dateFormatter dateFromString:string];
}
- (NSString *)oss_asStringValue {
NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.timeZone = [NSTimeZone timeZoneWithName:@"GMT"];
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US"];
dateFormatter.dateFormat = serverReturnDateFormat;
return [dateFormatter stringFromDate:self];
不知道大家注意到下面这两个设置
dateFormatter.timeZone = [NSTimeZone timeZoneWithName:@"GMT"];// 设置时区
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US"]; // 设置地域
如果没有这两个设置的话,如果你改一下系统设置:语言设置成印度尼西亚文,时间设置成12小时制。那么转换过来的时间字符串为2019-02-2810.09.14PM, 时间变成‘.’连接了
要想正确格式化时间就必须设置这两个属性。
个人博客地址:https://youyou0909.github.io
网友评论