Angenommen, ich habe zwei ParameterIch habe eine Methode, die Zeitzone Namen als Parameter und gibt die Tageskomponente des aktuellen Datums. Aber es gibt verschiedene falsche Ergebnisse
Australien/Sydney (GMT + 10) versetzt 36000 & Asia/Kolkata (IST) Offset 19800
wie Zeitzonen, gibt es unterschiedliche Werte für die Tagesbestandteil des aktuellen Tages selbst. Ich bin nicht in der Lage, herauszufinden, was ich falsch mache .. :(Eine wenig Ahnung wird
-(NSInteger)getDayWithTimeZoneName:(NSString *)timeZoneName{
// Instantiate a timezone
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:timeZoneName];
//Instantiate a date formatter
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setLocale:[NSLocale currentLocale]];
[df setTimeZone:timeZone];
[df setDateFormat:@"yyyy-MM-dd"];
NSString *dateStr = [df stringFromDate:[NSDate date]];
NSDate *date = [df dateFromString:dateStr];
// NSDateComponents *components = [[NSCalendar currentCalendar] components: NSCalendarUnitDay fromDate:date];
NSDateComponents *components = [[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]components:NSDayCalendarUnit fromDate:date];
NSInteger day = [components day];
NSLog(@"Date component for timeZone %@ is %ld", timeZoneName,(long)day);
return day;
}
„es gibt unterschiedliche Werte für die Tageskomponente des laufenden Tages“ Ist das nicht für bestimmte Zeiten des Tages zu erwarten? – trojanfoe
Ich bin in dieser Sache verwirrt. Wenn ich diesen Code für zwei verschiedene Zeitzonen am selben Tag ausführen. [NSDatum] Wie kann es einen anderen Wert für die Tageskomponente geben? Für diese Zeitzone (Asien/Kolkata) erhalte ich die Tageskomponente = 16, und für Australien/Sydney erhalte ich die Tageskomponente = 15 –
Sie bezieht sich wahrscheinlich auf '[NSDate date]', da dies das aktuelle Datum/die Uhrzeit in der GMT Zeitzone ('NSDate' hat keine Zeitzone). – trojanfoe