Библиотека Objective-C для Восхода и захода солнца?

есть ли библиотека Objective-C (или C) (совместимая с основным местоположением), которая может сказать мне время восхода и захода солнца для любого заданного календарного дня?

7 ответов


EDSunriseSet является открытым исходным кодом и свободной Objective-c оболочкой для подпрограмм языков C, созданных Павел Шлитер.

расчет выполняется полностью подпрограммами C-кода. EDSunrisetSet связывает эти вычисления с общими классами какао (NSDate, NSTimeZone,...)


Я на самом деле портирована Библиотека KosherJava и планируйте сделать его доступным в ближайшее время на GitHub!

Edit:

KosherCocoa теперь живут на GitHub! Если вам не нужен код, связанный с еврейским календарем, вы можете удалить файл "календарь". Файлы классов красиво разделены на папки, основанные на видах вычислений, которые они делают.

Edit: KosherCocoa США должны быть заменены на современный и более завершите обновление, как только смогу. Приведенная выше ссылка теперь указывает на устаревшее РЕПО.


Я использовал библиотеку под названием SUNWAIT. Очень простой, эффективный-простой в использовании!


попробуйте это: https://github.com/mourner/suncalc/

очень ясно и легко реализовать, хотя он написан javascript, но его легко преобразовать в
цель-с

Он также поддерживает для вычисления солнца, положения Луны и координаты.


Не найдя простой альтернативы Swift, я создал солнечное: быстрая построенная микро-библиотека для восхода / захода солнца.


просто к сведению.. если вы используете Berkley... ну, это не работает (по крайней мере, в Австралии). Он включает в себя код пола Шлитера C, хотя это здорово.

Если вы хотите, чтобы он работал в любом месте, лучше всего просто вычислить даты в UTC.

В SunriseAndSunset.m, заменить код с двойной подъем; двойной набор; следующим образом:

sun_rise_set(theYear, theMonth, theDay, lon, lat, &rise, &set);
int hours = HOURS(rise);
int mins = MINUTES(rise);
int sethrs = HOURS(set);
int setmins = MINUTES(set);

NSTimeInterval riseOffset = ((hours * 60) + mins) * 60;
NSTimeInterval setOffset = ((sethrs * 60) + setmins) * 60;

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSString *dateStr = [NSString stringWithFormat:@"%i-%02d-%02dT00:00:00+0000", theYear, theMonth, theDay];
NSDate *utcMidnight = [formatter dateFromString:dateStr];

NSDate *utcSunrise = [utcMidnight dateByAddingTimeInterval:riseOffset];
NSDate *utcSunset = [utcMidnight dateByAddingTimeInterval:setOffset];

[formatter release];
[gregorian release];

return [NSDictionary dictionaryWithObjectsAndKeys:utcSunrise, @"sunrise", utcSunset, @"sunset", nil];

попробуйте это:https://github.com/berkley/ObjectiveCUtil