2013-08-08 16 views
5

Attualmente quello che sto facendo è che io sto paragonando una data dico oldDate con la data odiernaVoglio ottenere la data di oggi senza tempo

   NSDate *dt = [NSDate date]; 
      NSComparisonResult result = [oldDate compare:dt]; 
      if (result == NSOrderedAscending) 
      { 
       // do something 
      } 

dt mi dà la data odierna con il tempo anche. Ma voglio solo un appuntamento e non c'è tempo. Come posso ottenerlo?

+0

Molte risposte su stackoverflow: http://stackoverflow.com/questions/1889164/get-nsdate-today-yesterday-this-week-last-week-this-month-last-month-var http://stackoverflow.com/questions/2331129/how-to-determine-if-an-nsdate-is-today – Flop

risposta

13
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setDateFormat:@"dd/MM/YYYY"]; 
NSString *dateString=[dateFormatter stringFromDate:[NSDate date]]; 
+0

Ma ho bisogno di confrontare due date qui, quindi in questo modo se sto convertendo date_String in nsdate, sto ottenendo il tempo aggiunto ad esso. –

+0

ok, devi prima convertire la data in stringa come sopra e dopo aver confrontato due stringhe come .... [String_date1 isEqualToString: String_Date2]; – hitesh

1

Qui si va:

NSDate *date = [NSDate Date]; 
NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init]; 
timeFormatter.dateFormat = @"HH:mm:ss"; 
NSString *timeString = [timeFormatter stringFromDate:date]; 

Ora la stringa TimeString contiene l'ora corrente nel formato HH: MM: SS, cioè 11:26:59

Ops Misread la domanda! questo è per il tempo solo per la data di vedere altre risposte - potrebbe anche lasciare questo anche qui.

2

È necessario utilizzare un programma di formattazione della data per emettere correttamente la data e/o l'ora per un oggetto NSDate.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

    [dateFormatter setDateStyle:NSDateFormatterFullStyle]; 
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 

    NSString *dateString = [dateFormatter stringFromDate:[NSDate date]]; 

Impostazione dei diversi tipi NSDateFormatterStyle produrrà più o meno informazioni, come richiesto, vale a dire .: "Martedì 1 gennaio 2013", oppure "01.02.2013".

+0

Ma come ottenere la data da questa dataString senza l'ora aggiunta ad esso. Perché quando sto convertendo questa dataString alla data (dataFormatter dataFromString: dateString) Ricevo ora il tempo aggiunto ancora –

+0

Impostando '[dateFormatter setTimeStyle: NSDateFormatterNoStyle];' il formattatore della data rimuoverà il tempo per te indipendentemente da come tu converti la data a una stringa o una stringa a una data. – CaptainRedmuff

+0

Grazie Captain .... ha funzionato !!! –

4

di prendere a cuore fusi orari e tutto ciò che si potrebbe fare qualcosa di simile:

- (NSInteger)day { 
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit fromDate:self]; 
    return [components day]; 
} 

- (NSInteger)month { 
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit fromDate:self]; 
    return [components month]; 
} 

- (NSInteger)year { 
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSYearCalendarUnit fromDate:self]; 
    return [components year]; 
} 

Naturalmente si può mettere tutto insieme in una funzione basta ricordarsi di modificare components conseguenza.

Caveat: Se si desidera qualcosa da mostrare all'utente, utilizzare una delle altre risposte con NSDateFormatter.

Problemi correlati