Data e l’Ora corrente – NSDate

Ho bisogno di visualizzare la Data e l’Ora correnti.

Ho usato ;

NSDate *currentDateNTime        = [NSDate date];

Voglio avere la data e l’ora corrente (Dovrebbe visualizzare l’ora di sistema e non ora GMT).
L’output dovrebbe essere in un NSDate formato e non NSString.

per esempio;

    NSDate *currentDateNTime        = [NSDate date];
//Do the processing....

NSDate *nowDateAndTime = .....; //Output should be a NSDate and not a NSString
Che cosa vuoi dire? [NSDate date] vi darà il tempo corrente. Che cosa vuoi?
Non c’è qui nessuna domanda. [NSDate data] restituisce la data corrente!
Voglio ottenere sia la Data e l’Ora correnti. es : 2012 23 Maggio 04.50 PM
So che è così. ma ho bisogno di ripristinare il Sistema in tempo e non ora GMT.
duplicato di stackoverflow.com/questions/10772033/…

OriginaleL’autore sharon Hwk | 2012-05-28

5 risposte

  1. 6

    Dal momento che tutti NSDate è GMT di cui, probabilmente si desidera che questo:
    (non’f dimenticare che il nowDate non sarà l’attuale sistema di data e ora, ma è “spostato”, quindi se si genererà NSString utilizzando NSDateFormatter, si vedrà una data errata)

    NSDate* currentDate = [NSDate date];
    NSTimeZone* currentTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
    NSTimeZone* nowTimeZone = [NSTimeZone systemTimeZone];
    
    NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:currentDate];
    NSInteger nowGMTOffset = [nowTimeZone secondsFromGMTForDate:currentDate];
    
    NSTimeInterval interval = nowGMTOffset - currentGMTOffset;
    NSDate* nowDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:currentDate];
    Quindi, come si può visualizzare la data corrente e l’ora corrente (Non ha GMT tempo, ma il tempo di Sistema)
    se si desidera visualizzare, è necessario NSString. Come si fa a visualizzare la NSDate oggetto?
    Io non ho intenzione di display, ma utilizzare il NSDate per fare un ulteriore calcolo della data corrente e l’ora.
    Questo è il terribile consigli. Non dovrebbe essere spostando manualmente le date per compensare i fusi orari. Utilizzare NSDateFormatter per visualizzare una data in una zona particolare.
    Mi dispiace, ma anche se questo è ciò che è stato richiesto, ho downvote questa risposta. Tentare di parlare l’interrogante fuori di questo approccio, o almeno WARN altri lettori che non si vuole fare questo. Passare circa un valore di tipo datetime che non è quello che sembra essere è fondamentalmente orribile disegno. Una soluzione è quella di passare una classe o una struttura con due campi (NSDate, NSTimeZone). Se si dispone di interagire con il codice legacy che non può essere adattato, allora sì, si potrebbe aver bisogno di un convertitore come questo. Limitare l’uso delle “menzogne” NSDate per una piccola parte del codice; usa il “timezoned” struttura altrove.

    OriginaleL’autore

  2. 5

    Ogni momento nel tempo è lo stesso momento in tutto il mondo-si è appena espresso come diversi tempi di orologio in diversi fusi orari. Pertanto, non è possibile modificare la data a data che rappresenta l’ora del proprio fuso orario, è necessario utilizzare una NSDateFormatter che si alimenti con il fuso orario. La stringa risultante è il momento nel tempo, espresso nell’ora della vostra posizione.

    Fare tutti i necessari calcoli GMT, e basta usare un programma di impaginazione per la visualizzazione.

    Esattamente. Una vergogna che nessuno metta commento sulla domanda originale, chiedendo OP perché di cui avevano bisogno per fare quello che hanno detto quello che dovevano fare – poiché ciò che hanno chiesto è un terribile design, dato la definizione di NSDate come timezone-indipendente. Per ottenere informazioni sufficienti per suggerire un approccio alternativo — o almeno di “contenere il danno” (limite di una piccola area di codice; fuso orario intorno altrove, se necessario, in modo che si può formattare come desiderato).

    OriginaleL’autore

  3. 1

    La pena di leggere
    [NSDate data di ritorno, la data e l’ora locale?

    Alcune risorse utili per chi si reca in questa più recente:

    Apple data e l’ora di programmazione guida alla lettura di esso, se si sta facendo qualcosa di serio con date e orari.
    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/DatesAndTimes/DatesAndTimes.html#//apple_ref/doc/uid/10000039i?language=objc

    Utile categoria NSDate con un sacco di utility consente un ~new~ data per essere generati sulla base di un esistente data.
    https://github.com/erica/NSDate-Extensions

    C’è anche una swift versione di categoria
    https://github.com/erica/SwiftDates

    OriginaleL’autore

  4. 0

    Avete bisogno di un NSDateFormatter e chiamare stringFromDate questo metodo per ottenere una stringa data.

    NSDateFormatter *dateformater = [[NSDateFormatter alloc] init];
    [dateformater setDateFormat:@"yyyyMMdd,HH:mm"];
    NSString *str = [dateformater stringFromDate: currentDateNTime];
    Non voglio output il risultato in una Stringa. Dovrebbe essere NSDate invece. e quando cerco di convertire NSDate (con dateFromString) mi indicherà l’ora GMT e non l’ora di sistema.

    OriginaleL’autore

  5. -1

    utilizzare questo metodo

    -(NSDate *)convertDateToDate:(NSDate *) date
    {
        NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
        NSDate *nowDate = [[[NSDate alloc] init] autorelease];
        [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
        [formatter setDateFormat:@"yyyy-MM-d H:m:s"];
        NSString * strdate = [formatter stringFromDate:date];
        nowDate = [formatter dateFromString:strdate];
        return nowDate;
    }

    questo potrebbe restituire ciò che vuoi.

    spero che questo può aiutare.

    questo mi sembra un metodo conveniente per rovinare tutta la data e la gestione del tempo e di tutti coloro che hanno scritto i calcoli, come si sta saltando nel tempo, invece di passare il fuso orario.
    Mi viene il dubbio che questo è corretto, poiché sembra che vi sia alcuna menzione del sistema (impostazioni internazionali correnti), che è ciò che la domanda chiede. (Se questo in qualche modo non produrre l’output desiderato, come avviene, non è intuitivo.)

    OriginaleL’autore

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *