I was trying to get the Hijri date while developing a windows 8.1 app but it wasn’t an easy task to do so especially when you know that unlike the normal .Net Framework , you can’t access Hirjri Calendar Class here although it is available due to MSDN documentation.
To save your time , at first I used a simple web service that provides Hijri Date as a text and parsed it. The nice thing is that this service is provided by Al-Azhar (Dar Al-Iftaa) so it is credible and accurate and wouldn’t stop after a short time.
I will share with you the code I wrote to get the date from this service
ConnectionProfile connection = NetworkInformation.GetInternetConnectionProfile(); bool internet = connection != null && connection.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess; if (internet) { HttpClient client = new HttpClient(); string res = await client.GetStringAsync("http://www.dar-alifta.org/dateservice.aspx?LangID=1"); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(res); DateTimeFormatter df = new DateTimeFormatter("longdate", new string[] { "ar-sa" }); var date = df.Format(DateTime.Now); return doc.GetElementbyId("lblDate").InnerText; }
To parse the HTML result , I used HTML Agility Library.
Although the previous solution would be accurate , it still needs internet to get the result which would result in a problem if the user’s device isn’t connected to internet all time. So here is another way to get the date if there is no internet connection
DateTimeFormatter df = new DateTimeFormatter("longdate", new string[] { "ar-sa" }); var date = df.Format(DateTime.Now); return date.ToString();
Combining these two ways should satisfy your user who wants to be aware of the Hijri Date anytime.
Regards ,
Ahmed Kamal
Nice Post.