Как преобразовать NSDate в целое число, чтобы передать PHP date () как метку времени unix?

Я новичок objective-c, и мне было поручено создать приложение для iPhone для нашего клиента. У меня есть некоторый опыт работы с Java, но почти нет опыта в этой цели-c, и это мой первый раз для разработки полного приложения...

во всяком случае, в настоящее время я стек на несколько проблем. Одна из этих проблем заключается в том, что мне нужно отправить целое значение для PHP date функция из моего приложения iOS. Я искал решение, но все они имеют дело с противоположные пути (int to NSDate), а не NSDate в целое число.

Я пробовал решения, как ответил здесь но очевидно, что он возвращает double, а не целое число...
Или этой но это не могло получить System time.

Я знаю, что могу получить nsdate текущей системы с:

NSDate *theDay = [NSDate dateWithTimeIntervalSinceNow:[[NSTimeZone systemTimeZone] secondsFromGMT]];  

но я не мог понять, как превратить это в целое (или длинное) значение.

мне просто нужно получить то же значение, что и мы может попасть в Java С System.currentTimeMillis().

кроме того, это мой первый раз, чтобы задать вопросы здесь, в stackoverflow. Поэтому, пожалуйста, дайте мне знать, если есть что-то, что я должен делать/не делать при публикации вопросов здесь и т. д.

спасибо.

1 ответов


чтобы получить текущую дату, вы должны использовать это:

NSDate *theDate = [NSDate date];

, чтобы получить его в секундах с 1 января 1970 года, как двойной, можно использовать:

NSTimeInterval seconds = [[NSDate date] timeIntervalSince1970];

чтобы получить его в ms, просто умножьте Предыдущее значение на 1000 и позвольте компилятору привести его в целое число без необходимости дополнительного кода:

long long milliseconds = [[NSDate date] timeIntervalSince1970] * 1000;

и как указывает @HotLicks, в то время как System.currentTimeMillis() находится в GMT, если вам нужно местное время, вы можете использовать:

long long milliseconds = ([[NSDate date] timeIntervalSince1970] 
                        + [[NSTimeZone defaultTimeZone] secondsFromGMT]) * 1000; 

(Я думаю, что большинство однако веб-службы захотят GMT.)