font color ios xcode nsdate nsdateformatter

ios - font - navbar text color ionic



¿Cómo obtengo el día de la semana y/o el nombre del mes de una variable de NSDate? (7)

Bien. El problema que tenemos es que tenemos NSStrings llenos de fechas en el formato de aaaamMMdd y lo que queremos hacer es obtener el día de la semana actual y el nombre del mes. La función dagOmvandlare convierte la cadena de fechas en día de la semana y mes. La función se llama en viewDidload para nombrar todos nuestros botones-títulos de inglés a sueco meses.

nuestra solución actual se ve así:

-(NSString *)dagOmvandlare:(id) suprDatum{ NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; dateFormatter.dateFormat = @"yyyyMMdd"; NSDate *date = [dateFormatter dateFromString:suprDatum]; NSString * monthString = [date descriptionWithCalendarFormat:@"%B"timeZone:nil locale:[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]]; if ([monthString isEqualToString:@"January"]) { monthString = @"Januari"; } else if ([monthString isEqualToString:@"February"]) { monthString = @"Februari"; } else if ([monthString isEqualToString:@"May"]) { monthString = @"Maj"; } else if ([monthString isEqualToString:@"June"]) { monthString = @"Juni"; } else if ([monthString isEqualToString:@"July"]) { monthString = @"Juli"; } else if ([monthString isEqualToString:@"August"]) { monthString = @"Augusti"; } else if ([monthString isEqualToString:@"October"]) { monthString = @"Oktober"; } else if ([monthString isEqualToString:@"March"]) { monthString = @"Mars"; } return monthString; } - (void)viewDidLoad { [super viewDidLoad]; [button3 setTitle:(NSString *)[self dagOmvandlare:self.datum1] forState:UIControlStateNormal]; [button2 setTitle:(NSString *)[self dagOmvandlare:self.datum2] forState:UIControlStateNormal]; [bmanad1 setTitle:(NSString *)[self dagOmvandlare:self.datum3] forState:UIControlStateNormal]; }

Y lo que hemos descubierto hasta ahora es que el

NSString * monthString = [date descriptionWithCalendarFormat:@"%B"timeZone:nil locale:[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]];

no se permite el uso de las directrices de las manzanas con respecto a las API no públicas. Entonces, la pregunta principal es, ¿qué otra forma hay para salir del día de la semana y el nombre del mes de nuestras cadenas de fechas que contienen fechas con el formato aaaaMMdd?


Como dice Apple, crear (y dejar que el ARC lo elimine) un formateador es caro, entonces:

1) declara en tu archivo:

private var localDateFormatter : DateFormatter? .. extension Date {

2) utilizar el enfoque perezoso:

if localDateFormatter == nil{ localDateFormatter = DateFormatter() let locale = Locale(identifier: "en_US_POSIX") ....} let newTime = localDateFormatter!.date(from: self)

si tienes todas las cosas en una clase, un miembro estático / let sería agradable. (No podemos usar vars en extensiones ... :( globals parece malo, pero de ninguna manera ...)


Espero que esto ayude

NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; NSDate *date = [NSDate date]; NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date]; NSInteger year = [dateComponents year]; NSInteger month = [dateComponents month]; NSInteger day = [dateComponents day]; NSInteger hour = [dateComponents hour]; NSInteger minute = [dateComponents minute]; NSInteger second = [dateComponents second]; [calendar release];

This podría ser útil

¿Otra pregunta de SO que podría ayudarle? ¿Cómo encontrar el día de la semana a partir de la fecha de hoy usando NSDate?


No es necesario convertir manualmente a las palabras suecas. iPhone lo hará por ti. Prueba esto:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @"yyyyMMdd"; NSDate *date = [dateFormatter dateFromString:@"20111010"]; // set swedish locale dateFormatter.locale=[[NSLocale alloc] initWithLocaleIdentifier:@"sv_SE"]; dateFormatter.dateFormat=@"MMMM"; NSString *monthString = [[dateFormatter stringFromDate:date] capitalizedString]; NSLog(@"month: %@", monthString); dateFormatter.dateFormat=@"EEEE"; NSString *dayString = [[dateFormatter stringFromDate:date] capitalizedString]; NSLog(@"day: %@", dayString);

Salida:

month: Oktober day: Måndag


Extensiones simples Swift 3:

// Weekday extension Date { func dayOfWeek() -> String? { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "EEEE" return dateFormatter.string(from: self).capitalized // or capitalized(with: locale) } } print(Date().dayOfWeek()!) // Wednesday // Month Name extension Date { func monthName() -> String? { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "MMMM" return dateFormatter.string(from: self).capitalized // or capitalized(with: locale) } } print(Date().monthName()!) // October


- (void) getMonthFromDate:(NSString *) stringDate { NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"yyyy-MM-dd"]; NSDate *date = [dateFormat dateFromString:stringDate]; NSCalendar* calendar = [NSCalendar currentCalendar]; NSDateComponents* components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:date]; // Get necessary date components NSLog(@"%lu", [components day]); NSLog(@"%lu %@",[components day],[[dateFormat monthSymbols] objectAtIndex:[components month]]); }


NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"EEEE"]; NSString *dayName = [dateFormatter stringFromDate:Date];

este dayName estará disponible en la configuración regional del usuario.


NSString *strDate=@"20110407"; NSDateFormatter *df=[[[NSDateFormatter alloc] init] autorelease]; [df setDateFormat:@"yyyyMMdd"]; NSDate *targetDate=[df dateFromString:strDate]; [df setDateFormat:@"EEEE MMMM dd, yyyy"]; NSString *s=[df stringFromDate:targetDate]; NSLog(@"Date: %@", s);