2010-03-17 16 views
22

So che posso capire la data odierna da [NSDate date]; ma come avrei scoperto oggi giorno della settimana, come Sabato, Venerdì eccCome trovare i giorni feriali dalla data odierna usando NSDate?

So che %w può essere utilizzato in NSDateFormatter, ma non lo faccio sapere di usarlo.

+0

Eventuali duplicati di [Come faccio ad avere il giorno della settimana con Cocoa Touch?] (http://stackoverflow.com/questions/4269093/how-do-i-get-the-day-of-the-week-with-cocoa-touch) – Suhaib

risposta

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

risposta s' See @HuguesBR Se avete solo bisogno il giorno della settimana, senza altri componenti (richiede iOS 8+).

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

(Se non si ottiene una risposta corretta, controllare se è stato scritto male NSCalendarUnitWeekday con altri componenti settimana legati come NSCalendarUnitWeekdayOrdinal, ecc)


Swift 3:

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

Grazie mille Kenny. Ha funzionato perfettamente. –

+3

comp giorno della settimana restituisce un numero irreale, enorme, invece. . . – coolcool1994

+2

@ coolcool1994 potresti usare 'NSWeekCalendarUnit' insted di' NSWeekdayCalendarUnit' – enadun

1

Se qualcuno è interessato a una soluzione Swift, utilizzare:

import Foundation 

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

Vedere demo.

Aggiornamento: fissato a lavorare a Swift 3

+0

nei giorni feriali è un enorme # ?! –

+0

Purtroppo questa risposta non ha funzionato per me. – Suhaib

+0

@Suhaib L'aggiornamento della risposta per abbinare l'ultima versione di Swift. Grazie per aver menzionato il problema. –

1

questa versione è aggiornata valida per iOS 8

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

Shorter versione

NSCalendarUnit dayOfTheWeek = [[NSCalendar currentCalendar] component:NSCalendarUnitWeekday fromDate:yourDate]; 
Problemi correlati