Qualcuno sa quali sono i valori minimi e massimi possibili per un NSDate?NSDate Min e Max Valori possibili
risposta
massima deve essere: 5828963-12-20 00:00:00 +0000 perché
NSDate *dateSinceNow = [NSDate dateWithTimeIntervalSinceNow:DBL_MAX];
NSDate *dateSindeReferenceDate = [NSDate dateWithTimeIntervalSinceReferenceDate:DBL_MAX];
NSLog(@"min: %@, max: %@", dateSinceNow, dateSindeReferenceDate);
è lo stesso.
minima ottengo questo è: 0001-01-01 00:00:00 +0000
causa questo è ciò che ottengo quando provo:
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
[df setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate *myDate = [df dateFromString: @"0001-01-01 00:00:00"];
NSLog(@"%@", myDate);
ma questa è epoca attuale come punte out da davedelong
quindi se si prova il primo esempio con - DBL_MAX si ottiene: 41221-07--2147483641 00:00:00 +0000. idea di che cosa era questo è ...
Credo che tu abbia riscontrato lo stesso problema che mi ha causato questa domanda. Penso che il valore minimo possibile della data sia 0001-01-01 00:00:00 tuttavia quando si usa NSDateFormatter la data viene distorta dal proprio fuso orario. Riprovare con quanto segue: [df setTimeZone: [NSTimeZone timeZoneForSecondsFromGMT: 0]]. –
timezone dell'impostazione mi dà 0001-01-01 00:00:00 +0000 anche – peko
Questo è solo a metà corretto. Il bit massimo è corretto, ma la tua logica per il minimo è difettosa. Questo è il minimo * per l'era attuale * (CE). 'NSDate' è perfettamente in grado di esprimere le date del BCE. Quello che stai cercando è '[NSDate dateWithTimeIntervalSince1970: -DBL_MAX]' –
Risposta A CURA:
ho pensato che avevo scoperto il valore minimo era data 0001-01-01 00:00:00 + 0000
(dato il mio codice qui sotto) Tuttavia, come è stato sottolineato nei commenti sotto, questo è solo per l'era attuale (cioè AD). Un valore NSDate può essere inferiore a questo, ma quello che vedi come risultato di un NSLog potrebbe non essere quello che ti aspetti, quindi consiglierei di guardare altre risposte qui e di ignorare la mia ignoranza.
Risposta ORIGINALE:
credo che ho scoperto il valore minimo data è 0001-01-01 00:00:00 + 0000
È necessario essere molto attenti quando NSLog'ing e valori di analisi al fine di garantire che il vostro isn fuso orario' t distorcendo leggermente il valore della data.
Cercherò di dimostrare qui di seguito:
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setDateFormat:@"yyyy-MM-dd hh:mm:ss z"];
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
[dateFormatter2 setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
NSDateFormatter *dateFormatter3 = [[NSDateFormatter alloc] init];
[dateFormatter3 setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
[dateFormatter3 setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate *date1 = [NSDate dateWithTimeIntervalSince1970:-62135596800];
NSLog(@"date1 = %@", date1);
NSLog(@"date1 via dateFormatter1 = %@", [dateFormatter1 stringFromDate:date1]);
NSLog(@"date1 via dateFormatter2 = %@", [dateFormatter2 stringFromDate:date1]);
NSLog(@"date1 via dateFormatter3 = %@", [dateFormatter3 stringFromDate:date1]);
NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:-62135596800 - 100]; // The - 100 makes no difference
NSLog(@"date2 = %@", date2);
NSLog(@"date2 via dateFormatter1 = %@", [dateFormatter1 stringFromDate:date2]);
NSLog(@"date2 via dateFormatter2 = %@", [dateFormatter2 stringFromDate:date2]);
NSLog(@"date2 via dateFormatter3 = %@", [dateFormatter3 stringFromDate:date2]);
Il risultato è il seguente output (sul mio iPad data la sua particolare fuso orario):
date1 = 0001-01-01 00:00:00 +0000
date1 via dateFormatter1 = 0001-12-31 11:58:45 GMT-00:01:15
date1 via dateFormatter2 = 0001-12-31 23:58:45 GMT-00:01:15
date1 via dateFormatter3 = 0001-01-01 00:00:00 GMT
date2 = 0001-12-31 23:58:20 +0000
date2 via dateFormatter1 = 0001-12-31 11:57:05 GMT-00:01:15
date2 via dateFormatter2 = 0001-12-31 23:57:05 GMT-00:01:15
date2 via dateFormatter3 = 0001-12-31 23:58:20 GMT
Nota date2 e come sottraendo ulteriori 100 secondi non ha ridotto il valore della data, ma in realtà sembrava aumentarlo. Ovviamente qualcosa di strano sul funzionamento degli interni di NSDate, il tempo è regolato di 100 secondi, ma questo distorce il giorno e il mese, forse perché non potrebbe andare più in basso?
se provi [NSDate dateWithTimeIntervalSinceNow: - DBL_MAX] ottieni qualcosa come 41221-07--2147483641 00:00:00 +0000 .. – peko
-1 errato. Questa è solo la data minima per l'era attuale, non la data minima complessiva. –
OK grazie per il puntatore, ho aggiornato la mia risposta. Le date mi fanno impazzire e il NSDateFormatter non aiuta davvero le cose. –
Utilizzare [NSDate distantFuture] e [NSDate distantPast].
+1 Apple fornisce questo metodo per questo tipo di domande complicate. – 9dan
Per coloro che, come l'OP, stanno convertendo i valori .Net DateTime e vogliono supportare DateTime.MinValue e DateTime.MaxValue, allora questi metodi Swift potrebbero essere di interesse: http://stackoverflow.com/a/41625877/253938 – RenniePet
- 1. Valori min e max SmallDateTime in C#
- 2. Python: valori Max e Min utilizzabili
- 3. Datepicker e timepicker - imposta valori max e min in android
- 4. min/max larghezza/altezza con più valori
- 5. Generale min e max - C++
- 6. come ottenere valori min e max da jQueryUI Slider
- 7. multipla valore Min e Max per testo
- 8. Specificare max e min per Random.nextInt()?
- 9. Aggiungi 90 min a NSDate
- 10. Linq (MIN && MAX)
- 11. Crossfilter - come trovare min/max
- 12. Ricerca della somma delle differenze di MAX e MIN di tutte le sottoserie possibili
- 13. Numero di telefono internazionale max e min?
- 14. Java - numero limite tra min e max
- 15. @Media min-width e max-width
- 16. Determinare min e max in gnuplot
- 17. SELEZIONE min min e max min valore da una parte di una tabella in MySQL
- 18. Come si annullano i valori min-max di UISlider?
- 19. SQLAlchemy: ottenere max/min/avg valori da una tabella
- 20. jQuery DatePicker Min Max date
- 21. C#: sequenza min a max
- 22. più recente valore max/min
- 23. x86 max/min istruzioni asm?
- 24. Che cos'è l'accelerometro Android min e gamma max
- 25. Come trovare epsilon, min e max costanti per CUDA?
- 26. Elemento min/max e più frequente di una lista
- 27. Ottenere min e max elementi per 2 serie nel panda
- 28. Il boxplot Matplotlib mostra solo i flip max e min
- 29. rolling min e rolling max per C++ boost?
- 30. SQL perché SELECT COUNT (*), MIN (col), MAX (col) più veloce di SELECT MIN (col), MAX (col)
Spiegare in quale scenario è necessario sapere questo. –
Che bisogno c'è ??? – Melbourne
===> WWDC 2011 Video "Sessione 117 - Esecuzione dei calcoli del calendario" (59:11) –