ฉันใช้สตริงรูปแบบใดเป็นมิลลิวินาทีในสตริงวันที่บน iPhone


100

ฉันต้องแยกวิเคราะห์สตริงในรูปแบบที่มีมิลลิวินาที ฉันใช้สตริงรูปแบบใดเพื่อให้ได้ค่าวันที่ที่ถูกต้อง

ตัวอย่างเช่นสมมติว่าฉันมีสตริงที่มีค่าต่อไปนี้: "2011-06-23T13: 13: 00.000"

สตริงรูปแบบใดที่ฉันส่งผ่านไปยัง NSDateFormatter ของฉันในรหัสต่อไปนี้

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];

ฉันใช้อะไรแทน ??? ในโค้ดด้านบน?

คำตอบ:


211

มันSSS, ต่อข้อมูลจำเพาะ Unicode Locale ข้อมูล Markup Language

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

โดยทั่วไปแล้วให้ใช้อักขระ S ตัวพิมพ์ใหญ่จำนวนเท่าใดก็ได้เพื่อให้ได้ตำแหน่งทศนิยมจำนวนมากนั้นในองค์ประกอบเศษส่วนของวินาที (ดังนั้นss.Sจะแสดงเวลาที่ใกล้ที่สุดในสิบของวินาทีเป็นต้น)


2
ฉันสงสัยว่าคุณรู้ไหมว่าฉันสามารถแยกวิเคราะห์มิลลิวินาทีแบบผ่อนปรนได้อย่างไร? วันที่อาจมี 6, 7 หรือแม้แต่มิลลิวินาที ฉันสามารถใช้นิพจน์ทั่วไปได้ แต่ฉันสงสัยว่าสามารถทำได้นอกกรอบด้วยสตริงรูปแบบที่เหมาะสมหรือไม่
Cyupa

วิธีนี้จำนวนสูงสุดของ S คือสามเช่น SSS หากคุณเพิ่มมากขึ้นคุณจะได้เลขศูนย์เช่นสำหรับ timeIntervalSince 1970 จาก 1415986217.544384 และ. SSSSSS คุณจะได้รับ. 544000 ดังนั้นจึงไม่ใช่วิธีที่ดี
malhal

@Cyupa หนึ่งมิลลิวินาทีเป็นเพียง 1/1000 ของวินาที ทศนิยม 6 ตำแหน่งคือไมโครวินาทีและทศนิยม 1 ตำแหน่งคือเดซิวินาที - การใช้มิลลิวินาทีสำหรับทศนิยมจำนวนเท่าใดก็ได้นั้นผิดเหมือนกับการใช้ตัวอักษรสำหรับบางสิ่งโดยเปรียบเปรย คุณยังทำได้ แต่นั่นทำให้ความหมายของคำนั้นเปลี่ยนไป
Liggliluff


4

คุณต้องส่ง 'S' ที่มีจำนวนเท่ากันในตอนท้ายเช่น My Date คือ'2015-11-17T03: 36: 45.041503Z'ซึ่งฉันใช้'yyyy-MM-dd'T'HH: mm: ss.SSSSSSz'ฟอร์แมตเตอร์ฉันหมายถึงดูตัวเลข 'S' คือ 6 เป็น 6 หลักในวันที่


สิ่งที่จะจัดรูปแบบให้ได้นาโนวินาทีเป็นไมโครวินาทีแทนที่จะเป็นมิลลิวินาที ฉันได้ลองใช้ 'yyyy-MM-dd'T'HH: mm: ss.SSSSSSz' และ 'yyyy-MM-dd'T'HH: mm: ss.SSSSSSSSSSz' แล้วไม่ได้ผล
IndexOutOfDevelopersException

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.