Можно ли увидеть в NSDate, была ли установлена часть времени или нет?
Или, перефразируя вопрос: можно ли создать NSDate таким образом, чтобы, глядя на экземпляр, я мог видеть, установлено ли время или нет?
У меня возникла проблема, когда я иногда читаю DATE, а иногда DATETIME из базы данных. В обоих случаях я создаю объект NSDate, однако мне хотелось бы знать исходный тип. Я знаю, что могу сделать обертку или что-то вокруг NSDate, но мне просто интересно, есть ли какой-то другой более простой способ, просто взглянув на экземпляр NSDate, чтобы увидеть, было ли время ставил или нет изначально?
Тиа
Ответ 1 · рейтинг 3 · Eiko
Я думаю, что вы создаете свои экземпляры NSDate таким же образом, только с часами, минутами и секундами, установленными на 0 в случае DATE only, конвертируя это в NSTimeInterval и используя это инициализировать вашу дату?
Тогда нет возможности отличить настоящую дату от ложной. Вы можете проверить, используя тот же алгоритм, который вы использовали для его создания, то есть часы == 0 && минуты == 0 && секунды == 0. Но это не удастся для реального DATETIME с теми свойствами, которые может быть, а может и не быть проблемой.
Судя по документации, установить только дату невозможно, поэтому ваше преобразование уже приводит к потере деталей.
Ответ 2 · рейтинг 2 · Dave DeLong
NSDate представляет один момент времени. Таким образом, с ним всегда будет связано время. Поэтому ваш вопрос некорректен. Если у вас есть NSDate, то у него есть компонент времени. Если вы хотите извлечь различные части даты (например, месяц, год, час, секунду и т. д.), используйте -[NSCalendar components:fromDate:].