หากเราได้รับ input ของวันที่เข้ามาในรูปของ string ลักษณะนี้
20100405
20100406
20100407
เป็นตัวอักษร 8 หลัก ปี เดือน วัน
แล้วเราต้องการแปลงให้เป็น object ของ NSDate เพื่อให้การนำไปใช้งานสะดวกขึ้น วิธีทำก็คือใช้ NSDateFormatter ช่วย โดยกำหนด format ที่จะนำเข้าให้ date formatter ตาม pattern ที่ของ string ดังนี้
จากนั้นลอง print date ออกมาจะได้ผลลัพธ์คือ
หากเรายังไม่แปลง string ให้กลายมาเป็น date แล้วล่ะก็ การบวกเวลาเพิ่มเข้าไปอีก 1 วันคงไม่ใช่เรื่องง่ายนัก แต่ด้วยการที่มันอยู่ในรูปของ NSDate เราจึงใช้ method ปกติที่มีได้เลย ในที่นี่จะใช้วิธีบวกวินาทีเพิ่มเข้าไป เช่น
เราก็จะได้ผลลัพธ์เป็นวันที่ถัดไปอีก 1 วันข้างหน้า
หรือหากต้องการแปลงกลับมาให้เป็น string ใน pattern เดิม ก็ยังสามารถใช้ method stringFromDate: ได้
และหากเราต้องการรู้อีกว่าวันนั้นตรงกับวันอะไร เราสามารถใช้ date formatter ช่วยอีกได้ ดังนี้
ผลลัพธ์ที่ได้คือ
อ่านวิธีเขียน format string อื่นๆได้จาก ที่นีี่ :)
ขอบคุณ @katanyoo ที่ช่วยหา resource มาให้
Related Link from Roti
20100405
20100406
20100407
เป็นตัวอักษร 8 หลัก ปี เดือน วัน
แล้วเราต้องการแปลงให้เป็น object ของ NSDate เพื่อให้การนำไปใช้งานสะดวกขึ้น วิธีทำก็คือใช้ NSDateFormatter ช่วย โดยกำหนด format ที่จะนำเข้าให้ date formatter ตาม pattern ที่ของ string ดังนี้
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat: @"yyyyMMdd"]; NSString *dateString = @"20100405"; NSDate *date = [dateFormat dateFromString: dateString];
จากนั้นลอง print date ออกมาจะได้ผลลัพธ์คือ
2010-04-05 00:00:00 +0700
หากเรายังไม่แปลง string ให้กลายมาเป็น date แล้วล่ะก็ การบวกเวลาเพิ่มเข้าไปอีก 1 วันคงไม่ใช่เรื่องง่ายนัก แต่ด้วยการที่มันอยู่ในรูปของ NSDate เราจึงใช้ method ปกติที่มีได้เลย ในที่นี่จะใช้วิธีบวกวินาทีเพิ่มเข้าไป เช่น
NSDate *tomorrow = [date addTimeInterval: 60 * 60 * 24 * 1];
เราก็จะได้ผลลัพธ์เป็นวันที่ถัดไปอีก 1 วันข้างหน้า
หรือหากต้องการแปลงกลับมาให้เป็น string ใน pattern เดิม ก็ยังสามารถใช้ method stringFromDate: ได้
และหากเราต้องการรู้อีกว่าวันนั้นตรงกับวันอะไร เราสามารถใช้ date formatter ช่วยอีกได้ ดังนี้
[dateFormat setDateFormat: @"E"]; NSString *day = [dateFormat stringFromDate: tomorrow];
ผลลัพธ์ที่ได้คือ
Tue
อ่านวิธีเขียน format string อื่นๆได้จาก ที่นีี่ :)
ขอบคุณ @katanyoo ที่ช่วยหา resource มาให้
Related Link from Roti
0 comments:
Post a Comment