Как конвертировать NSDate
в метку времени Unix? Я прочитал много постов, которые делают обратное. Но я не нахожу ничего связанного с моим вопросом.
143
Как конвертировать NSDate
в метку времени Unix? Я прочитал много постов, которые делают обратное. Но я не нахожу ничего связанного с моим вопросом.
Я считаю, что это селектор NSDate, который вы ищете:
- (NSTimeInterval)timeIntervalSince1970
Отметка времени Unix это число секунд , прошедших с 00:00:00 UTC 1 января 1970 года Это представленного типа time_t , который, как правило , подписанное 32-разрядное целое число типа (длинное или целое).
iOS предоставляет - (NSTimeInterval) timeIntervalSince1970 для объектов NSDate, который возвращает количество секунд с 00:00:00 по Гринвичу 1 января 1970 года. NSTimeInterval - это двойной тип с плавающей запятой, поэтому вы получаете секунды и доли секунды.
Так как они оба имеют одинаковую ссылку (полночь 1Jan1970 UTC) и оба в секундах, преобразование легко, конвертируйте NSTimeInterval в time_t, округляя или обрезая в зависимости от ваших потребностей:
источник
int unixTime = floor([piece.piece_last_view timeIntervalSince1970])
где piece.piece.last_view - NSDateВы можете создать дату отметки времени Unix из даты следующим образом:
источник
ПРИМЕЧАНИЕ. - Метка времени должна находиться в зоне UTC, поэтому я конвертирую наше местное время в время UTC.
источник
стриж
Обновлено для Swift 3
Ноты
timeIntervalSince1970
возвращаетTimeInterval
, что является typealias дляDouble
.Если вы хотите пойти другим путем, вы можете сделать следующее:
источник
Если вы хотите сохранить это время в базе данных или отправить его через сервер ... лучше всего использовать метки времени Unix. Вот небольшой фрагмент, чтобы получить это:
источник
[[NSTimeZone systemTimeZone] secondsFromGMT]]
:? Пожалуйста, объясните немного.Мой предпочтительный способ просто:
источник
Согласно предложению @ kexik с использованием функции времени UNIX, как показано ниже:
. Согласно моему опыту - не используйте timeIntervalSince1970, он дает метку времени эпохи - количество секунд, которое вы отстаете от GMT.Раньше была ошибка с [[NSDate date] timeIntervalSince1970], раньше она добавляла / вычитала время в зависимости от часового пояса телефона, но, похоже, сейчас исправлена.
источник
первый unixtime 1532278070
второй unixtime 1532278070.461380
третий unixtime 1532278070
источник
Если вам нужна отметка времени в виде строки.
источник