将JSON字符串转换为NSDate会发生错误

时间:2015-09-27 13:34:41

标签: ios objective-c json

这是我收到的需要转换为NSDate的json字符串值:

  

2017-04-08T13:51:00.000 + 03:00

这是我转换为NSDate:

import UIKit

class SearchResultsViewController: UIViewController {

let contentArray = ["lorem", "ipsum", "dolor", "sit", "amet"]

@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var noItemsLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func searchForItemsWithString(searchQuery:String) {

    if contentArray.count != 0 {
        tableView.hidden = false
        noItemsLabel.hidden = true

    }
    else {
        tableView.hidden = true
        noItemsLabel.hidden = false
    }

}

}

结果记录:

  

nsdate :( null)

似乎日期格式不正确。如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

使用以下日期格式化程序字符串

"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"

使用ZZZZZ作为时区/区域/时间偏移量 - 例如+03:00
SSS小数秒 - 例如123个
最重要的是在秒与其分数之间使用.而不是:

  

感谢rmaddy纠正SZ的数量以满足所需的确切输入

请注意,您可以使用SZ代替SSSZZZZZ,因为解析器足够聪明,无论如何都可以解析它。如果你想从日期创建一个字符串,但是你需要上面的日期格式化字符串。

"yyyy-MM-dd'T'HH:mm:ss.SZ"

enter image description here

  

有关日期格式化程序字符串的更多详细信息,请参见zh的unicode部分   Date Format Patterns

答案 1 :(得分:-1)

结束时Z为时间偏移量

+ (NSDate *)stringDateToDate:(NSString *)aStringDate
{
   NSDate *date = nil;

   NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
   [dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss:SSSZ"];

   date = [dateFormat dateFromString:aStringDate];
   NSLog(@"nsdate: %@", date);

   return date;
}