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

2023-07-26  本文已影响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;
}
上一篇 下一篇

猜你喜欢

热点阅读