美文网首页
NSDate和NSString相互转换注意事项

NSDate和NSString相互转换注意事项

作者: 13d8cd576232 | 来源:发表于2019-04-29 10:33 被阅读0次

偶然翻看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

相关文章

网友评论

      本文标题:NSDate和NSString相互转换注意事项

      本文链接:https://www.haomeiwen.com/subject/lnmhuqtx.html