String format Anda sudah dekat, tetapi Anda ingin menentukan milidetik dengan SSS
, juga:
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSX"];
Juga, Z
di string tanggal Anda adalah singkatan dari "Zulu" (yaitu GMT/UTC), jadi dateFormat
Anda harus menggunakan Z
atau X
tanpa tanda kutip sehingga mem-parsing zona waktu string dengan benar. Juga, jika Anda membuat string dari tanggal, pastikan untuk mengatur zona waktu Anda sesuai. Anda juga ingin menyetel lokal Anda:
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.locale = enUSPOSIXLocale;
formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSX";
formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
Lihat Tanya Jawab Teknis QA1480 untuk informasi lebih lanjut.
Anda juga dapat menggunakan NSISO8601DateFormatter
yang lebih baru , yang membuat Anda keluar dari beberapa gulma itu:
NSISO8601DateFormatter *formatter = [[NSISO8601DateFormatter alloc] init];
formatter.formatOptions = NSISO8601DateFormatWithFullDate | NSISO8601DateFormatWithFullTime | NSISO8601DateFormatWithFractionalSeconds;