Библиотека Objective-C для восхода и захода солнца? - PullRequest
19 голосов
/ 05 ноября 2010

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

Ответы [ 7 ]

23 голосов
/ 19 марта 2012

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

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

8 голосов
/ 17 апреля 2011

Я на самом деле портировал KosherJava Library и планирую скоро сделать ее доступной на GitHub!

Редактировать:

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

Редактировать: KosherCocoa нам нужно заменить современным, более полным обновлением, как только я смогу.Приведенная выше ссылка теперь указывает на устаревшее хранилище.

6 голосов
/ 05 ноября 2010

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

4 голосов
/ 23 марта 2013

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

Очень понятный и простой в реализации, хотя он написан на JavaScript, но его легко конвертировать в
Objective-C

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

2 голосов
/ 14 апреля 2016

Не найдя простой альтернативы Swift, я создал Solar : встроенную в Swift микробиблиотеку Sunrise / Sunset.

1 голос
/ 15 августа 2012

Просто примечание ... если вы используете 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];
0 голосов
/ 30 июля 2012

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

...