2011-06-23 22 views
91

Tôi bắt buộc phải phân tích chuỗi ở định dạng bao gồm mili giây. Tôi sử dụng chuỗi định dạng nào để có được giá trị ngày đúng?Tôi sử dụng chuỗi định dạng nào cho mili giây trong chuỗi ngày trên iPhone?

Ví dụ, giả sử tôi có một chuỗi có giá trị như sau: "2011-06-23T13: 13: 00.000" chuỗi

định dạng gì để tôi vượt qua để NSDateFormatter của tôi trong các mã sau đây?

NSString *dateValue = @"2011-06-23T13:13:00.000"; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
NSString *formatString = @"yyyy-MM-dd'T'HH:mm:ss.???"; 
[formatter setDateFormat:formatString]; 
NSDate *date = [formatter dateFromString:dateValue]; 

Tôi nên làm gì thay cho ??? trong đoạn mã trên?

+0

Còn 'sss' thì sao? – EmptyStack

Trả lời

190

Đó là SSS, theo Unicode Locale Data Markup Language spec.

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

Nói chung, sử dụng bất kỳ số ký tự chữ hoa chữ thường nào để nhận được nhiều chữ số thập phân trong thành phần phân số-của-một giây. (Vì vậy, ss.S sẽ hiển thị thời gian đến phần mười giây gần nhất, chẳng hạn.)

+2

Tôi đã tự hỏi nếu bạn biết làm thế nào tôi có thể làm cho một phân tích khoan dung của mili giây? Ngày tháng có thể có 6, 7 hoặc thậm chí không có mili giây. Tôi có thể đi với các biểu thức thông thường nhưng tôi đã tự hỏi nếu điều này có thể được thực hiện ra khỏi hộp với một chuỗi định dạng thích hợp. – Cyupa

+0

Bằng cách này, số lượng S tối đa là ba, ví dụ: SSS. Nếu bạn thêm nhiều hơn, bạn chỉ nhận được số không, ví dụ: cho timeIntervalSince1970 của 1415986217.544384 và .SSSSSS bạn nhận được .544000 do đó không phải là giải pháp tuyệt vời. – malhal

-1

sử dụng fff cho ba chữ số thập phân của một giây

"yyyy-MM-dd'T'HH:mm:ss.SSS" 
+0

Điều đó không thành công. Tôi không có ngày trở lại. – ageektrapped

+0

Có lẽ đó là một thủ đô F? – Luke

6

Date Format Patterns guide cho biết rằng "S" là định dạng thông số cho phần thập phân giây.

+2

+1 Liên kết tuyệt vời, cảm ơn bạn. Tôi đã đánh dấu nó sau này. :-) – Patricia

4

Bạn cần phải vượt qua cùng một số 'S' ở cuối ví dụ ngày của tôi là '2015-11-17T03: 36: 45.041503Z' i sử dụng 'yyyy-MM-dd'T'HH : mm: ss.SSSSSSz ' định dạng, ý tôi là, số lượng chữ' S 'là 6 là 6 chữ số đến trước.

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