2015-09-03 19 views
5

Tôi có một đối tượng array của NSDate mà tôi đang cố chuyển đổi thành số string. Cách tôi chuyển đổi chúng là NSDateFormat, nhưng nếu có cách nào tốt hơn, tôi sẽ rất vui khi được nghe.Cách chuyển đổi ngày (không biết loại) thành chuỗi

Những điều nhất một date sẽ phải là:

Days-Hours-Minutes-Seconds-Milliseconds 

Nhưng một số sẽ chỉ còn lại ít, như:

Minutes-Seconds-Milliseconds 

Hoặc thậm chí ít hơn. Bây giờ tôi sẽ phải chuyển đổi chúng thành string. Tôi có phải tạo if statements để xác định xem nó có ngày, giờ, v.v. hay có cách nào dễ dàng hơn để thực hiện việc này không?

+2

Bạn có ít nhất có một danh sách tất cả các khả năng? Nếu vậy, bạn chỉ có thể thử chúng cái khác. – matt

+1

Hoặc có lẽ bạn có thể phân biệt các khả năng chỉ bằng cách đếm dấu gạch nối? Đó là một điều dễ dàng. – matt

+3

Thử sử dụng // Sử dụng 'NSDataDetector'. – zaph

Trả lời

1

Ví dụ sử dụng NSDataDetector (Swift 2.0):

let textDate = "dan's march 31, 1975 12:34 pm"; 

do { 
    let dd = try NSDataDetector(types: NSTextCheckingType.Date.rawValue) 
    if let tcr :NSTextCheckingResult = dd.firstMatchInString(textDate, options:[], range:NSMakeRange(0, textDate.utf16.count)), 
     let date = tcr.date { 
      print("date: \(date)") 
     } 
} 
catch { 
    print("Data Detector error!") 
} 

Output:

ngày: 1975-03-31 16:34:00 +0000

+0

Tôi đang sử dụng phiên bản trước đó của swift – Jessica

+0

Ngoài ra, Nếu tôi không sai, tôi có thể sử dụng textDate.count trong swift 2.0 – Jessica

+1

@Jessica Một câu trả lời Swift 1.x sẽ lỗi thời trong một tuần để nó thực sự không có ý nghĩa tại thời điểm này. 'Utf16' là cần thiết, đây là một phương pháp Mục tiêu và hy vọng một số đơn vị mã utf16. 2.0 có các thuộc tính đếm utf8, utf16 và utf32. Thông báo lỗi là: 'count' không khả dụng: không có câu trả lời phổ biến nào tốt, xem nhận xét tài liệu để thảo luận. Swift.String: 40: 7: note: 'count' đã được đánh dấu rõ ràng ở đây. – zaph

Các vấn đề liên quan