Кто-нибудь знает, какие минимальные и максимально возможные значения для NSDate?NSDate Min и Max Возможные значения
ответ
максимум должен быть: 5828963-12-20 00:00:00 +0000 потому
NSDate *dateSinceNow = [NSDate dateWithTimeIntervalSinceNow:DBL_MAX];
NSDate *dateSindeReferenceDate = [NSDate dateWithTimeIntervalSinceReferenceDate:DBL_MAX];
NSLog(@"min: %@, max: %@", dateSinceNow, dateSindeReferenceDate);
то же самое.
минимум я получаю это: 0001-01-01 00:00:00 +0000
причиной этого является то, что я получаю, когда я пытаюсь:
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);
но это нынешняя эпоха, как заостренный out by davedelong
поэтому, если вы попробуете первый пример с - DBL_MAX, вы получите: 41221-07--2147483641 00:00:00 +0000. понятия не имею, что это эпоха ...
Я считаю, что вы испытываете ту же проблему, которая заставила меня задать этот вопрос. Я думаю, что минимально возможное значение даты 0001-01-01 00:00:00, однако, когда вы используете NSDateFormatter, дата изменяется на ваш часовой пояс. Повторите попытку со следующим: [df setTimeZone: [NSTimeZone timeZoneForSecondsFromGMT: 0]]. –
установка часового пояса дает мне 0001-01-01 00:00:00 +0000 тоже – peko
Это только половина правильной. Максимальный бит правильный, но ваша логика для минимума ошибочна. Это минимальный * для текущей эпохи * (CE). 'NSDate' отлично умеет выражать даты BCE. То, что вы ищете, это '[NSDate dateWithTimeIntervalSince1970: -DBL_MAX]' –
EDITED Ответ:
Я думал, что я обнаружил, что минимальное значение даты было 0001-01-01 00:00:00 + 0000
(учитывая мой код ниже), однако, как было указано в комментариях ниже, это только для текущей эры (т.е. AD). Значение NSDate может пойти ниже этого, но то, что вы видите в результате NSLog, возможно, не так, как вы ожидаете, поэтому я бы рекомендовал посмотреть другие ответы здесь и игнорировать мое невежество.
ORIGINAL Ответ:
Я считаю, что я обнаружил, минимальное значение даты является 0001-01-01 00:00:00 + 0000
Вы должны быть очень осторожны, когда NSLog'ing и значения синтаксического анализа, чтобы убедиться, что ваш часовой пояс ISN» t слегка искажает значение даты.
Я попытаюсь продемонстрировать ниже:
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]);
Это приводит следующий вывод (на мой IPad, учитывая его особенности часовой пояс):
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
Примечание date2 и как вычитанием еще 100 секунд не уменьшило значение даты, но фактически, казалось, увеличило ее. Очевидно, что что-то особенное в том, как работают внутренние работы NSDate, время настраивается на 100 секунд, но это, в свою очередь, сокращает день и месяц, возможно, потому, что это не может быть ниже?
если вы попробуете [NSDate dateWithTimeIntervalSinceNow: - DBL_MAX], вы получите что-то вроде 41221-07--2147483641 00:00:00 +0000 .. – peko
-1 неверно. Это только минимальная дата текущей эры, а не минимальная дата в целом. –
ОК спасибо за указатель, я обновил свой ответ. Даты дуют мне в голову, и NSDateFormatter действительно не помогает. –
Использовать [NSDate distantFuture] и [NSDate distantPast].
+1 Apple предоставляет этот метод для таких сложных вопросов. – 9dan
Для тех, кто, подобно OP, преобразует значения .Net DateTime и хочет поддерживать DateTime.MinValue и DateTime.MaxValue, тогда эти методы Swift могут представлять интерес: http://stackoverflow.com/a/41625877/253938 – RenniePet
- 1. Получение значения MIN и MAX на колонке
- 2. Значения случайных генераторов max/min?
- 3. Значения атрибута Sphinx MIN() и MAX()
- 4. DISPLAY MIN() и MAX() Значения в MySQL
- 5. Функции Min и max возвращают неправильные значения
- 6. Найти значения max и min в .json
- 7. Как найти значения Max и Min?
- 8. MySQL: MIN() и MAX() от строкового значения
- 9. html5 datepicker set min и max значения
- 10. MomentJS max и min return неправильные значения
- 11. Значения MAX и MIN первичного ключа
- 12. Значения Java Max и Min - два подхода
- 13. Python: Полезные значения Max и Min
- 14. Найти неизвестные значения max/min свойства
- 15. MySQL MAX и MIN
- 16. Python max и min
- 17. RexExp min и max
- 18. Перестановка max и min
- 19. MIN и MAX строки
- 20. SQL запрос - Найти суточную Min, Max и раз, когда значения Min и Max произошло
- 21. Назначить примитив max и min
- 22. max и min массива C#
- 23. SELECT MIN (MAX) после выбора значения MIN в MySQL
- 24. Query Max/Min value показывает исходные значения
- 25. Ошибка печати значения экрана. Max Min values
- 26. Oracle 10g: оценка значения столбца MIN/MAX
- 27. OpenNI 2 set min/max значения глубины
- 28. Найти значения Max/Min в цикле for
- 29. Как изменить значения min-max UISlider?
- 30. Apache Metamodel - Min/Max/значения по умолчанию
Пожалуйста, объясните, в каком сценарии вам нужно это знать. –
В чем его потребность ??? – Melbourne
===> WWDC 2011 Video «Session 117 - Выполнение расчётов календаря» (59:11) – 2013-03-01 12:05:05