How to get the Hijri Date in Windows 8.1 Accurately?

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 Hijri 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
 

      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.