OStack程序员社区-中国程序员成长平台

标题: ios - 将时区感知 .isoformat() 日期时间字符串转换为 NSDate [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 16:59
标题: ios - 将时区感知 .isoformat() 日期时间字符串转换为 NSDate

我从我的 Web API 获得以下 NSString"2013-12-03T19:13:56+00:00"

我想获取这个 NSString 并使用 NSDateFormatter 创建相应的 NSDate。对于我的一生,我无法弄清楚可以帮助我做到这一点的格式化字符串。我总是零。这是我正在尝试的:

+ (NSDate *)dateFromUTCFormattedDateStringNSString *)dateString
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName"UTC"];
    [dateFormatter setTimeZone:timeZone];
    [dateFormatter setDateFormat"YYYY-MM-ddThh:mm:ssTZD"];
    // Apply the date formatter and return it.
    return [dateFormatter dateFromString:dateString];
}



Best Answer-推荐答案


一个问题是嵌入“:”的时区。使用以下日期格式:

@"yyyy-MM-dd'T'HH:mm:sszzz"

注意 'zzz' 代替了 'TZD'。

请参阅 ICU 用户指南:Formatting Dates and Times

enter image description here

测试:

NSString *dateString = @"2013-12-03T19:13:56+00:00";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName"UTC"];
[dateFormatter setTimeZone:timeZone];
[dateFormatter setDateFormat"yyyy-MM-dd'T'HH:mm:sszzz"];

NSDate *dateFromString = [dateFormatter dateFromString:dateString];
NSLog(@"dateFromString: %@", dateFromString);

NSLog 输出:

dateFromString: 2013-12-03 19:13:56 +0000

关于ios - 将时区感知 .isoformat() 日期时间字符串转换为 NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20339441/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4