Ktoś wie, jakie są minimalne i maksymalne możliwe wartości dla NSDate?NSDate Min i Max Możliwe wartości
Odpowiedz
maksymalna powinna być: 5828963-12-20 00:00:00 +0000 ponieważ
NSDate *dateSinceNow = [NSDate dateWithTimeIntervalSinceNow:DBL_MAX];
NSDate *dateSindeReferenceDate = [NSDate dateWithTimeIntervalSinceReferenceDate:DBL_MAX];
NSLog(@"min: %@, max: %@", dateSinceNow, dateSindeReferenceDate);
jest taka sama.
minimum dostaję to: 0001-01-01 00:00:00 +0000
przyczyną jest to, co otrzymuję podczas próby:
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);
ale jest obecna era jak wskazano przez davedelong
, więc jeśli spróbujesz pierwszy przykład z - DBL_MAX otrzymasz: 41221-07--2147483641 00:00:00 +0000. nie wiem co to jest era ...
Wierzę, że doświadczasz tego samego problemu, który spowodował, że zadałem to pytanie. Myślę, że minimalna możliwa wartość daty to 0001-01-01 00:00:00, jednak kiedy używasz NSDateFormatter data jest wypaczana przez twoją strefę czasową. Spróbuj ponownie, wykonując następujące czynności: [df setTimeZone: [NSTimeZone timeZoneForSecondsFromGMT: 0]]. –
ustawienie timezone daje mi 0001-01-01 00:00:00 +0000 też – peko
To jest tylko połowa poprawna. Bit maksymalny jest poprawny, ale twoja logika minimalna jest wadliwa. To minimum * dla obecnej ery * (CE). 'NSDate' jest całkowicie zdolny do wyrażania dat BCE. To, czego szukasz, to '[NSDate dateWithTimeIntervalSince1970: -DBL_MAX]' –
EDITED Odpowiedź:
Myślałem, że ja odkryłem wartość minimalna data była 0001-01-01 00:00:00 + 0000
(biorąc pod uwagę mój kod poniżej) Jednakże jak zostało wskazane w komentarzach poniżej, jest to tylko dla bieżącej ery (tj. AD). Wartość NSDate może być niższa niż ta, ale to, co widzisz w wyniku NSLog, może nie być tym, czego się spodziewasz, więc poleciłabym przejrzenie innych odpowiedzi tutaj i ignorowanie mojej niewiedzy.
ORIGINAL Odpowiedź:
wierzę, że odkryłem minimalną wartość daty jest 0001-01-01 00:00:00 + 0000
Trzeba być bardzo ostrożnym przy NSLog'ing i wartości parsowanie aby upewnić się, że ISN stref czasowych” t nieznacznie przekrzywiając wartość daty.
Postaram się wykazać poniżej:
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]);
Wynika to w następnym wyjściu (na moim iPadzie biorąc pod uwagę jego szczególności stref czasowych):
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
Uwaga date2 i jak odejmując dodatkowe 100 sekund nie zmniejszyło wartości daty, ale wydawało się, że ją zwiększyło. Oczywiście, coś dziwnego w sposobie działania wewnętrznych NSDate, czas jest regulowany o 100 sekund, ale to pochyla dzień i miesiąc, może dlatego, że nie może iść niżej?
jeśli spróbujesz [NSDate dateWithTimeIntervalSinceNow: - DBL_MAX] otrzymasz coś takiego jak 41221-07--2147483641 00:00:00 +0000 .. – peko
-1 niepoprawne. Jest to tylko minimalna data bieżącej epoki, a nie minimalna ogólna data. –
OK dzięki za wskaźnik, zaktualizowałem swoją odpowiedź. Daty mnie dmuchają, a NSDateFormatter naprawdę nie pomaga. –
+1 Apple zapewnia tę metodę dla tego rodzaju podchwytliwych pytań. – 9dan
Dla tych, którzy, podobnie jak OP, konwertują wartości .Net DateTime i chcą wspierać DateTime.MinValue i DateTime.MaxValue, wtedy te metody Swift mogą być interesujące: http://stackoverflow.com/a/41625877/253938 – RenniePet
- 1. znaleźć MIN i MAX wartości DataTable przy użyciu C#
- 2. Jak mogę odwrócić wartości min-max UISlider?
- 3. Znalezienie sumy różnic wartości MAX i MIN wszystkich możliwych podzbiorów
- 4. min i max w wielowymiarowej-tablicy
- 5. SELECT min max i max min wartość z części tabeli w MySQL
- 6. Getting inne wartości dziedzinie linii z MIN/MAX wartości
- 7. iOS Swift max(), min()
- 8. Czy możemy zdefiniować min-margin i max-margin, max-padding i min-padding w css?
- 9. Międzynarodowy numer telefonu max i min?
- 10. Ustal min i max w gnuplot
- 11. Czy numeric_limits min/max constexpr?
- 12. szybki sposób uzyskać min/max wartości między właściwościami obiektu
- 13. x86 max/min instrukcje asm?
- 14. Zedgraph - Ustaw wartości Min/Max na osi na stałe
- 15. Matplotlib boxplot show only max i min flier
- 16. Strumień Java: znajdź element o wartości min/max atrybutu
- 17. Uzyskaj numery min-max z wielowymiarowych tablicy
- 18. Powrót min/max wielowymiarowy w Pythonie?
- 19. C#: sekwencja od min do max
- 20. Warunkowe Min i Max w programie Excel 2010
- 21. Filtr Crossfilter - jak znaleźć min/max
- 22. MIN() i MAX() w Swift i konwersja int do CGFloat
- 23. Ustaw min, max i liczbę kroków na wykresie radarowym.js
- 24. XPath 1 i XPath 2 powrotne różne wyniki przy określaniu wartości min i max
- 25. Jak znaleźć min/max z Ruby?
- 26. TSQL Wybierz Min & Max wiersz podczas grupowania
- 27. Jak ograniczyć Min-Max Czas bootstrap DateTimePicker
- 28. W SQL, istnieją non-kruszywo min/max
- 29. Jakie są min/max jednostek vh?
- 30. Python min/max na Brak Typ
Proszę wyjaśnić, w jakim scenariuszu trzeba to wiedzieć. –
Jaka jest tego potrzeba? – Melbourne
===> Wideo WWDC 2011 "Sesja 117 - Wykonywanie obliczeń kalendarza" (59:11) –