ios 日期类型的dateFormatter字符串2013-03- 24 T02:15:23-08:00使用Objective C

6tqwzwtp  于 2023-07-01  发布在  iOS
关注(0)|答案(3)|浏览(164)

我想将2013-03- 24 T02:15:23-08:00字符串转换为NSDate对象。我尝试格式化程序字符串yyyy-MM-ddTHH:mm:ss-Z,但NSDate对象是作为nil来的。
下面是我的转换代码:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
        [dateFormatter setDateFormat:@"yyyy-MM-ddTHH:mm:ss-Z"];
        NSDate* date = [dateFormatter dateFromString:image.dateTaken];
kmb7vmvb

kmb7vmvb1#

日期格式字符串中有两个错误:

  • 日期格式中的(文字)T字符必须用引号引起来作为'T'
  • -08:00这样的“ISO8601时区”的格式是ZZZZZ。请注意,减号是时区本身的一部分,而不是格式的一部分。

这应该可以工作:

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
uoifb46i

uoifb46i2#

NSString *dateString = @"2013-03-24T02:15:23-08:00";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSDate *dateFromString = [[NSDate alloc] init];

dateFromString = [dateFormatter dateFromString:dateString];
cnjp1d6j

cnjp1d6j3#

2013-03- 24 T02:15:23-08:00在这个字符串Z不是正确的格式为-08:00...
Z的正确格式如下
Z:GMT-08:00

Z:-0800
请检查下面的链接供您参考
http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns
如果将日期字符串更改为-0800或GMT-08:00,则可以获得正确的日期...

相关问题