Bon allez, pour me faire pardonner, j'ai transformé le code javascript du site http://www.aly-abbara.com/utilitaires/calendrier/calendrier_hijir.html en une fonction .NET et cette fois, on arrive au résultat attendu ;)
Imports System.Globalization
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MessageBox.Show(julienhijri(24, 9, 2014))
End Sub
Private Function JulienHijRi(ByVal DD As Integer, ByVal MM As Integer, ByVal YY As Integer) As String
Dim GGG As Double = 1
If (YY < 1582) Then GGG = 0
If (YY <= 1582 And MM < 10) Then GGG = 0
If (YY <= 1582 And MM = 10 And DD < 5) Then GGG = 0
Dim JD As Double = -1 * Math.Floor(7 * (Math.Floor((MM + 9) / 12) + YY) / 4)
Dim S As Double = 1
If ((MM - 9) < 0) Then S = -1
Dim A As Double = Math.Abs(MM - 9)
Dim J1 As Double = Math.Floor(YY + S * Math.Floor(A / 7))
J1 = -1 * Math.Floor((Math.Floor(J1 / 100) + 1) * 3 / 4)
JD = JD + Math.Floor(275 * MM / 9) + DD + (GGG * J1)
JD = JD + 1721027 + 2 * GGG + 367 * YY - 0.5
Dim K1 As Double = (JD + 1.5)
Dim K2 As Double = (K1 / 7)
Dim K3 As Double = K2 - Math.Floor(K2)
Dim JS As Double = Math.Round(K3 * 7 + 0.000000000317)
Dim Z As Double = (JD + 0.5)
Dim AH As Double = Math.Floor((Z * 30 - 58442554) / 10631)
Dim R2 As Double = Z - Math.Floor((AH * 10631 + 58442583) / 30)
Dim M As Double = Math.Floor((R2 * 11 + 330) / 325)
Dim R1 As Double = R2 - Math.Floor((M * 325 - 320) / 11)
Dim J As Double = R1 + 1
Dim strM() As String = {"Mouharram", "Safar", "Rabi'ou Al-Awwal", "Rabi'ou Al-Thani", "Joumada Al-Awwal", "Joumada Al-Thani", "Rajab", "Ch'ban", "Ramadan", "Chawwal", "Dhou Al-Qi'da", "Dhou Al-Hijja"}
Dim strJ() As String = {"Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"}
Return String.Format("{0} {1} {2} {3}", strJ(JS - 1), J, strM(M - 1), AH)
End Function
End Class