【问题标题】:Can I use NSDateFormatter to convert this date string to an NSDate?我可以使用 NSDateFormatter 将此日期字符串转换为 NSDate 吗?
【发布时间】:2011-04-03 10:14:16
【问题描述】:

我有这个字符串...

2010-08-24T16:00:00-05:00

我想从中提取时间部分(即 16:00)并将其转换为等效的 12 小时(即下午 4:00)。我正在尝试使用 NSDateFormatter 来完成此操作,但它不起作用...

NSDateFormatter* dateformatter = [[NSDateFormatter alloc] init];
[dateformatter setDateFormat:@"hh:mm a"];
NSDate *date1 = [dateformatter dateFromString:[listOfTimes objectAtIndex:0]];
[dateformatter release];

我可以使用这种日期格式的 NSDateFormatter 吗?如果不是,我如何提取时间并将其转换为等效的 12 小时时间?

谢谢!

【问题讨论】:

  • 请提供您当前无法使用的代码。

标签: iphone ipad ios nsdate nsdateformatter


【解决方案1】:

问题与解析冒号有关。我问了同样的问题,解决方法在这里:How to parse a date string into an NSDate object in iOS?

【讨论】:

    【解决方案2】:

    我认为您应该能够执行以下操作。

    // create the date formatter object NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; NSDate* date = [formatter dateFromString:dateString]; // set up the new date format [formatter setDateFormat:@"hh:mm:ss"]; NSString *twelveHourTime = [formatter stringFromDate:date]; [formatter release];

    更新:修正 dateFormatter 字符串格式。我有下面的行,但 Z 似乎是不必要的。时区总是把我搞砸。 :-/

        [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
    

    【讨论】:

    • hmmm...这不起作用,但对我来说看起来不错。从 [formatter dateFromString:dateString] 返回的日期返回无效字符串。
    • 谢谢,杰瑞,但还是不行。我得到一个。出于好奇,您是否对此进行了测试并且有效?我想知道我是否在其他地方做错了什么。
    • 嗯,对不起,我今天似乎很难转码。我测试了一些有用的东西,绝对不是这个。
    • 我遇到的问题是我找不到在时区偏移中支持冒号的方法。
    【解决方案3】:

    这个答案需要更新。从 iOS 10 开始,系统提供的NSISO8601DateFormatter 可用于这种特定格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多