2010-03-17 15 views
22

sé que puedo averiguar la fecha de hoy por [NSDate date]; pero ¿cómo puedo saber hoy día de la semana, al igual que el sábado Viernes etc.¿Cómo encontrar un día laborable a partir de la fecha de hoy usando NSDate?

Sé que %w se puede utilizar en NSDateFormatter, pero no lo hago saber usarlo

+0

duplicado posible de [¿Cómo consigo la día de la semana con Cocoa Touch?] (http://stackoverflow.com/questions/4269093/how-do-i-get-the-day-of-the-week-with-cocoa-touch) – Suhaib

Respuesta

68
NSCalendar* cal = [NSCalendar currentCalendar]; 
NSDateComponents* comp = [cal components:NSCalendarUnitWeekday fromDate:[NSDate date]]; 
return [comp weekday]; // 1 = Sunday, 2 = Monday, etc. 

respuesta Ver @HuguesBR 's Si sólo necesita el día de la semana y sin otros componentes (Requiere IOS 8+).

NSInteger weekday = [[NSCalendar currentCalendar] component:NSCalendarUnitWeekday 
                fromDate:[NSDate date]]; 

(Si no recibe una respuesta correcta, compruebe si ha escrito mal NSCalendarUnitWeekday con otros componentes relacionados con una semana de como NSCalendarUnitWeekdayOrdinal, etc.)


Swift 3:

let weekday = Calendar.current.component(.weekday, from: Date()) 
// 1 = Sunday, 2 = Monday, etc. 
+0

Muchas gracias Kenny. Eso funcionó perfectamente. –

+3

día laborable de la compra devuelve un gran número irreal en su lugar. . . – coolcool1994

+2

@ coolcool1994 puede usar 'NSWeekCalendarUnit' en lugar de' NSWeekdayCalendarUnit' – enadun

1

Si alguien está interesado en una solución Swift, a continuación, utilizar:

import Foundation 

let weekday = NSCalendar.current.component(.weekday, from: Date()) 
print(weekday) // => prints the weekday number 1-7 (Sunday through Saturday) 

Ver el demo.

actualización: fijo para trabajar en Swift 3

+0

entre semana es un gran #? –

+0

Lamentablemente, esta respuesta no funcionó para mí. – Suhaib

+0

@Suhaib La actualización de respuesta coincide con la última versión de Swift. Gracias por mencionar el problema. –

1

Esta versión está actualizada válida para iOS 8

NSCalendar* currentCalendar = [NSCalendar currentCalendar]; 
NSDateComponents* dateComponents = [currentCalendar components:NSWeekdayCalendarUnit fromDate:[NSDate date]]; 
return [dateComponents weekday]; 
1

Shorter versión

NSCalendarUnit dayOfTheWeek = [[NSCalendar currentCalendar] component:NSCalendarUnitWeekday fromDate:yourDate]; 
Cuestiones relacionadas