Saya menerima tanggal/waktu sebagai NSString dari server saya tempat saya mengubah waktu itu menjadi NSDate ke waktu lokal pengguna menggunakan NSTimeZone. Setelah itu saya mencoba memformat ulang NSDate ini menjadi NSString yang lebih mudah dibaca menggunakan format NSDateFormatter baru, namun ketika saya mencoba menerapkan format baru ini, dateString yang dihasilkan akan dikembalikan ke waktu Server asli.
Saya ingin tahu apa yang saya lakukan salah, saya ingin menunjukkan waktu yang dikonversi dalam format baru.
ini adalah kode yang saya gunakan
// set date format
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
// change time to systemTimeZone
NSTimeZone *timeZone = [NSTimeZone systemTimeZone];
[dateFormatter setTimeZone:timeZone];
NSDate *localTime = [dateFormatter dateFromString:[singleInstanceActivationHistoryDictionay objectForKey:@"ActivationTime"]];
// reformat converted Time to readable format
NSDateFormatter *dateFormat1 = [[NSDateFormatter alloc] init];
[dateFormat1 setDateFormat:@"dd/MM/yy - hh:mm a"];
NSString *dateWithNewFormat = [dateFormat1 stringFromDate:localTime];
NSLog(@"TimeZone - %@", timeZone);
NSLog(@"UTC ServerTime - %@", [singleInstanceActivationHistoryDictionay objectForKey:@"ActivationTime"]);
NSLog(@"UTC to deviceTimeZone - %@", localTime);
NSLog(@"NewFormat - %@", dateWithNewFormat);
Ini adalah contoh keluaran saya
TimeZone - Pacific/Auckland (NZST) offset 43200
UTC ServerTime - 2013-08-22 01:45:59
UTC to deviceTimeZone - 2013-08-21 13:45:59 +0000
NewFormat - 22/08/13 - 01:45 AM
bantuan apa pun akan sangat dihargai
NSDate
, itu akan mewakili titik waktu yang benar (perhatikan bahwaNSDate
objek tidak menyadari zona waktu, mereka mewakili momen waktu tertentu terlepas dari zona waktu dan musim panas, dll). Ketika Anda telah mengurai momen tertentu dengan benar, Anda dapat merepresentasikan momen spesifik tersebut dalam waktu setempat dengan menggunakan pemformat tanggal kedua - person dreamlax   schedule 22.08.2013