美文网首页
iOS16 12/24小时制 时间戳转换

iOS16 12/24小时制 时间戳转换

作者: 你的小福蝶 | 来源:发表于2023-07-26 16:48 被阅读0次

根据 官方文档NSDateFormatter, 用户非24小时时间制(设置>通过>日期和时间>24小时制),这会导致 NSDateFormatter 重写您设置的格式字符串,这可能会导致时间解析失败(时间戳转换为 0)。

解决办法:在给NSDateFormatter设置 locale,官方推荐使用地区identifier:en_US_POSIX

//时间字符串转时间戳(毫秒),适配12/24小时制,formatStr 默认为@"yyyyMMdd HH:mm"
- (NSString *)getTimeStampWith:(NSString *)timeStr withFormar:(NSString *)formatStr{
    if (formatStr.length==0){
        formatStr = @"yyyyMMdd HH:mm";
    }
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:formatStr];
    //强制更改为24小时制
    dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
    NSDate *localDate2 = [dateFormatter dateFromString:timeStr];
    NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)([localDate2 timeIntervalSince1970] * 1000)];
    return timeSp;
}

相关文章

网友评论

      本文标题:iOS16 12/24小时制 时间戳转换

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