Библиотека 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];