Есть ли библиотека Objective-C (или C) (совместимая с базовым расположением), которая может рассказать мне время восхода и захода солнца за любой данный календарный день?
Objective-C Библиотека для восхода и захода солнца?
Ответ 1
EDSunriseSet является открытым исходным кодом и бесплатной оболочкой Objective-C для подпрограмм языка C, созданных Paul Schlyter.
Вычисление выполняется полностью подпрограммами С-кода. EDSunrisetSet переводит эти вычисления в обычные классы Cocoa (NSDate, NSTimeZone,...)
Ответ 2
Я на самом деле портировал библиотеку KosherJava и планирую скоро сделать ее доступной на GitHub!
Редактировать:
KosherCocoa теперь на GitHub! Если вам не нужен код, связанный с еврейским календарем, вы можете удалить файл "calendar". Файлы классов красиво разделены на папки в зависимости от того, какие вычисления они выполняют.
Изменение: KosherCocoa нас должны заменить современным и более полным обновлением, как только я смогу. Приведенная выше ссылка теперь указывает на устаревшее хранилище.
Ответ 3
Я использовал библиотеку под названием SUNWAIT. Очень простой, эффективный - простой в использовании!
Ответ 4
Попробуйте следующее: https://github.com/mourner/suncalc/
Очень понятный и простой в реализации, хотя он написан javascript, но его легко конвертировать в
objective-C
Он также поддерживает вычисление солнца, положения луны и координат.
Ответ 5
После того, как вы не нашли простую альтернативу Swift, я создал Solar: Быстрое построение микро-библиотеки для Sunrise/Sunset.
Ответ 6
Просто примечание.. если вы используете Беркли один... ну это не работает (в Австралии как минимум). Он действительно включает в себя код Paul Schlyter 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];
Ответ 7
попробуйте следующее: https://github.com/berkley/ObjectiveCUtil