Yitzchok ported the Zmanim API from Java to a .NET API using C#. The Zmanim .NET project was released under the LGPL 2.1. This is a change from the GPL used by the Java API, something that may change shortly. Also part of the project was the creation of a C# version of the Zmanim CLI, matching Moshe Wagner’s Java Zmanim CLI. When developing the project, Yitzchok created the ZmanimTest JUnit test case class to confirm that the C# port output matched the Java API. I will likely add this to the core Zmanim API in the near future. The port currently relies on IKVM assemblies as can be seen in the Java references in the code sample below, mostly because of the lack of a native .NET equivalent of the Java TimeZone class. Yitzchok also created some examples of the use of the Zmanim .NET API that will be of help to developers. Below are two of the simpler examples in C# and VB.NET demonstrating a very simple use of the API to output zmanim from the console.
C#
using Zmanim.TimeZone; using Zmanim.TzDatebase; //in Zmanim.TzDatebase.dll assembly using Zmanim.Utilities; namespace Zmanim.Samples.Console { class Program { static void Main(string[] args) { string locationName = "Lakewood, NJ"; double latitude = 40.09596; //Lakewood, NJ double longitude = -74.22213; //Lakewood, NJ double elevation = 0; //optional elevation ITimeZone timeZone = new OlsonTimeZone("America/New_York"); GeoLocation location = new GeoLocation(locationName, latitude, longitude, elevation, timeZone); ComplexZmanimCalendar zc = new ComplexZmanimCalendar(location); //optionally set it to a specific date with a year, month and day //ComplexZmanimCalendar zc = new ComplexZmanimCalendar(new DateTime(1969, 2, 8), location); System.Console.WriteLine("Today's Zmanim for " + locationName); System.Console.WriteLine("Sunrise: " + zc.GetSunrise()); //output sunrise System.Console.WriteLine("Sof Zman Shema MGA: " + zc.GetSofZmanShmaMGA()); //output Sof Zman Shema MGA System.Console.WriteLine("Sof Zman Shema GRA: " + zc.GetSofZmanShmaGRA()); //output Sof Zman Shema GRA System.Console.WriteLine("Sunset: " + zc.GetSunset()); //output sunset System.Console.WriteLine("Press enter to exit."); System.Console.ReadLine(); } } }
VB.NET
mports Zmanim.TzDatebase 'in Zmanim.TzDatebase.dll assembly Imports Zmanim.Utilities Imports Zmanim.TimeZone Module Module1 Sub Main() Dim locationName As String = "Lakewood, NJ" Dim latitude As Double = 40.09596 'Lakewood, NJ Dim longitude As Double = -74.22213 'Lakewood, NJ Dim elevation As Double = 0 'optional elevation Dim timeZone As ITimeZone = New OlsonTimeZone("America/New_York") Dim location As New GeoLocation(locationName, latitude, longitude, elevation, timeZone) Dim zc As New ComplexZmanimCalendar(location) 'optionally set it to a specific date with a year, month and day 'Dim zc As New ComplexZmanimCalendar(New DateTime(1969, 2, 8), location) System.Console.WriteLine("Today's Zmanim for " & locationName) System.Console.WriteLine("Sunrise: " & zc.GetSunrise().ToString) 'output sunrise System.Console.WriteLine("Sof Zman Shema MGA: " & zc.GetSofZmanShmaMGA().ToString) 'output Sof Zman Shema MGA System.Console.WriteLine("Sof Zman Shema GRA: " & zc.GetSofZmanShmaGRA().ToString) 'output Sof Zman Shema GRA System.Console.WriteLine("Sunset: " & zc.GetSunset().ToString) 'output sunset System.Console.WriteLine("Press enter to exit.") System.Console.ReadLine() End Sub End Module
The current Zmanim .NET TODO list for the project includes:
- Remove dependency to Java (IKVM assemblies)
- The API should follow the .NET guidelines
- Make it Linq friendly
- Add examples how to use this project in a ASP.NET MVC site and WPF Application
- Try to get it to work on Silverlight
If anyone is interested in helping out in any of the TODO’s just go over to Github make an account and Fork the project when you are done just send me Pull Request.
any possibility to specify dates when getingt the Zmanim times via the .net api.
thanks
I am sure that there is. Please contact Yitzchok (alternate contact) for details on the .NET code.
@james
Are you looking for this.
ComplexZmanimCalendar czc = new ComplexZmanimCalendar(new DateTime(2010, 4, 2), location);
Thanks Yitzchok. I updated the C# and VB.NET examples above.
Does .NET code include the updates for version 1.3.0? If not what version of Zmanim project is it based on? Thanks.
From what I can tell, Yitzchok has kept his port up to date with the recent changes in the Java API. Have a look at the Yitzchok/Zmanim/commits Github page.
Hello,
Has C# version (.NET Code) “GetParasha”?
Thanx, Sharon
Have a look at the JewishCalendar part of Yitzchok’s GitHub zmanim project where it clearly looks like it is.
hi
where can i get the vb project of zmanim?
regards, ilan