@מלא
אם זה טוב לך כנראה שתוכל ללמוד מכאן כמה דברים...
זה מגיע מפרוג.
אז הנה המקור של הספריה בדוט נט:
https://github.com/Yitzchok/Zmanim
יש את זה גם בNuGet:
https://www.nuget.org/packages/Zmanim/
והנה דוגמה למימוש חלקי בC#
(רוב הקוד לא שלי אלא מתוך מה שמצאתי בפרוייקט שלו (בתוך הטסטים..)
public static void Demo()
{
//מגדירים את המיקום
string locationName = "פסגות";
double latitude = 31.898974;
double longitude = 35.224247;
double elevation = 0; //optional elevation
GeoLocation location = new GeoLocation(locationName, latitude, longitude, elevation, new WindowsTimeZone(TimeZoneInfo.Local));
List<dynamic> allTimesForYear = new List<dynamic>();
var days = from day in GetDaysInHebrewYear(DateTime.Now, location)
select day;
foreach (var item in days)
{
allTimesForYear.Add(new
{
//כאן אפשר להוסיף זמנים ככל העולה על רוחנו
//ישנם כמאה ועשרים מתודות של כל סוגי הזמנים והחישובים האפשריים לחומרא ולקולא
sunrise = item.GetSunrise(),
sunset = item.GetSunset(),
alotHumra = item.GetAlos90Zmanis(),
alot = item.GetAlosHashachar()
});
}
}
/// <summary>
/// מחזירה אובייקט של זמנים עבור כל יום מימות השנה העברית
/// </summary>
/// <param name="year"></param>
/// <param name="location"></param>
/// <returns></returns>
public static IEnumerable<ComplexZmanimCalendar> GetDaysInHebrewYear(DateTime year, GeoLocation location)
{
Calendar calendar = new HebrewCalendar();
var currentYear = calendar.GetYear(year);
var amountOfMonths = calendar.GetMonthsInYear(currentYear);
for (int i = 0; i < amountOfMonths; i++)
{
var currentMonth = i + 1;
var daysInMonth = calendar.GetDaysInMonth(currentYear, currentMonth);
for (int dayOfMonth = 0; dayOfMonth < daysInMonth; dayOfMonth++)
{
var zmanimCalendar = new ComplexZmanimCalendar(location);
zmanimCalendar.DateWithLocation.Date = new DateTime(currentYear, currentMonth, dayOfMonth + 1, calendar);
yield return zmanimCalendar;
}
}
}
אולי כשאסיים אעלה פרוייקט מסודר.
פורסם במקור בפורום CODE613 ב06/06/2017 00:57 (+03:00)