Pertanyaan Cara mendapatkan waktu lokal di iOS [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Saya hanya memperhatikan itu NSDate *nowDate = [NSDate date]; memberi saya GMT + 0 Waktu dan bukan waktu setempat. Jadi pada dasarnya di iPad saya itu 13:00 dan output dari kode ini adalah 12:00.

Bagaimana cara mendapatkan waktu lokal dengan benar?


6
2018-03-25 13:02


asal


Jawaban:


Berikan Tembakan!

NSDate* sourceDate = [NSDate date];

NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];//use `[NSTimeZone localTimeZone]` if your users will be changing time-zones. 

NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;

NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate] autorelease];

Ini akan memberi Anda waktu sesuai dengan zona waktu sistem saat ini.


28
2018-03-25 13:04



NSDate tidak peduli dengan zona waktu. Ini hanya mencatat momen pada waktunya.

Anda harus mengatur zona waktu lokal saat menggunakan NSDateFormatter untuk mendapatkan representasi string dari tanggal:

NSDate *date = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; // Set date and time styles
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSString *dateString = [dateFormatter stringFromDate:date];

6
2018-03-25 13:23



// get current date/time
NSDate *today = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
NSString *currentTime = [dateFormatter stringFromDate:today];
[dateFormatter release];
NSLog(@"%@",currentTime);

4
2018-03-25 13:05



 NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
 [calendar setTimeZone:[NSTimeZone localTimeZone]];
 NSDateComponents *dateComponents = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:[NSDate date]];
 NSDate *d = [calendar dateFromComponents:dateComponents];

3
2018-03-25 13:14