none
Meilleur article 15.11.2010 - 15.12.2010 RRS feed

  • Discussion générale

  • CALENDRIER REPUBLICAIN, CONVERSIONS

    '
    Option Explicit On
    '
    ' calendrier Républicain (conversions)
    ' Utilisation :
    ' - histoire
    ' - généalogie
    ' - calendrier
    '
    ' Principe :
    ' Le calendrier republicain debute retroactivement le 22/09/1792 et s acheve le 31/12/1805
    ' L annee commence a l equinoxe d automne
    ' L annee est divisee en 4 saisons de 3 mois
    ' Chaque mois est divise 30 jours de 3 semaines (decades) sauf :
    ' Le 12 eme mois qui a 35 jours, ou 36 les annees bissextiles (36 unique fete)
    ' Les jours : primodi, duodi, tridi, quartidi, quintidi, sextidi, septidi, octodi, nonidi, decadi
    ' La semaine a 3 jours feries (decadi)
    '
    ' Obs historique :
    ' Comme on le voit selon le nom des mois, ils correspondent aux saisons d Europe, il en découle que la 
    ' DDHC universelle de 1789 confirme que pour les révolutionnaires, "l univerdalité" c était la France, 
    ' à la rigueur l Europe exclusivement. Ceci est à nouveau confirme par le decret du 4 frimaire an II, 
    ' qui donna sa forme definitive au calendrier. Ce dernier decret abolit l "ere vulgaire" et définit le 
    ' 22 septembre 1792 comme étant le premier jour de l "ere des Francais".
    ' Or à cette periode il est evident que 3 ans apres la révolution, si les révolutionnaires avaient pretendus
    ' que la DDHC "universelle" etait "pour l humanité" ils n'auraient pas employe le terme "des francais".
    ' CQFD, donc la DDHC universelle ne s'applique qu'aux français de France metropolitaine, a ses sujets
    ' presents a cette epoque et a leur civilisation.
    '
    ' Conception du programme :
    ' Les calculs se font en boucle (1er au dernier jour) avec arret sur la date cherchee, vu le petit nombre
    ' le dates il semble plus rapide de les entrer en dur afin d'éviter tout calcul fastidieux, comme par
    ' exemple de calculer la position du soleil afin d'avoir la date de l equinoxe d automne ...
    '
    Public Class Form1
     Dim njG(8) As String
     Dim njR(11) As String
     ' OBJETS
     ' form1
     ' label1 ' nom du jour grégorien
     ' combobox1, 2, 3 (date grégorienne : j / m / aaaa)
     ' button1 ' valide recherche date républicaine
     ' label2 ' nom du jour républicain
     ' combobox4, 5, 6 (date républicaine : j / m / a)
     ' button12 ' valide recherche date grégorienne
     ' 11 objet au total (2 label + 6 combo + 2 bouton + 1 form)
     '
     Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      Dim i As Long ' chargement des objets et constantes
      njG(0) = "dimanche"
      njG(1) = "lundi"
      njG(2) = "mardi"
      njG(3) = "mercredi"
      njG(4) = "jeudi "
      njG(5) = "vendredi"
      njG(6) = "samedi"
      njG(7) = "--------"
      '
      For i = 1 To 36 ' jour
       If i < 32 Then ComboBox1.Items.Add(Format(i, "00")) ' gégorien
       ComboBox4.Items.Add(Format(i, "00")) ' républicain
      Next i
      ComboBox1.SelectedIndex = 21
      ComboBox4.SelectedIndex = 0
      '
      ComboBox2.Items.Add("janvier") ' mois
      ComboBox2.Items.Add("février")
      ComboBox2.Items.Add("mars")
      ComboBox2.Items.Add("avril")
      ComboBox2.Items.Add("mai")
      ComboBox2.Items.Add("juin")
      ComboBox2.Items.Add("juillet")
      ComboBox2.Items.Add("août")
      ComboBox2.Items.Add("septembre")
      ComboBox2.Items.Add("octobre")
      ComboBox2.Items.Add("novembre")
      ComboBox2.Items.Add("décembre")
      ComboBox2.SelectedIndex = 8
      '
      For i = 1792 To 1805 ' ans G
       ComboBox3.Items.Add(i)
      Next i
      ComboBox3.SelectedIndex = 0
      '
      njR(0) = "decadi"
      njR(1) = "primodi"
      njR(2) = "duodi"
      njR(3) = "tridi"
      njR(4) = "quartidi"
      njR(5) = "quintidi"
      njR(6) = "sextidi"
      njR(7) = "septidi"
      njR(8) = "octodi"
      njR(9) = "nonidi"
      njR(10) = "--------"
      '
      ComboBox5.Items.Add("vendémiaire")
      ComboBox5.Items.Add("brumaire")
      ComboBox5.Items.Add("frimaire")
      ComboBox5.Items.Add("nivôse")
      ComboBox5.Items.Add("pluviôse")
      ComboBox5.Items.Add("ventôse")
      ComboBox5.Items.Add("germinal")
      ComboBox5.Items.Add("floréal")
      ComboBox5.Items.Add("prairial")
      ComboBox5.Items.Add("Messidor")
      ComboBox5.Items.Add("Thermidor")
      ComboBox5.Items.Add("Fructidor")
      '
      ComboBox6.Items.Add("I")
      ComboBox6.Items.Add("II")
      ComboBox6.Items.Add("III")
      ComboBox6.Items.Add("IV")
      ComboBox6.Items.Add("V")
      ComboBox6.Items.Add("VI")
      ComboBox6.Items.Add("VII")
      ComboBox6.Items.Add("VIII")
      ComboBox6.Items.Add("IX")
      ComboBox6.Items.Add("X")
      ComboBox6.Items.Add("XI")
      ComboBox6.Items.Add("XII")
      ComboBox6.Items.Add("XIII")
      ComboBox6.Items.Add("XIV")
      '
      Button1.Text = "Date républiquaine"
      Button2.Text = "Date grégorienne"
      Me.Text = "Conversion double calendrier républicain et grégorien"
      Me.Left = 50
      Me.Top = 50
      Call Button1_Click(sender, e)
     End Sub
    
    
     Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Dim d1 As Date = 22 & "/" & 9 & "/" & 1792 ' calcule date républicaine
      Dim dG As Date
      Dim jjG As Byte = ComboBox1.SelectedIndex + 1
      Dim mmG As Byte = ComboBox2.SelectedIndex + 1
      Dim aaaaG As Integer = ComboBox3.SelectedIndex + 1792
      Dim jjR As Byte = 1
      Dim mmR As Byte = 1
      Dim aaR As Byte = 1
      Dim i As Integer
      Try
       dG = jjG & "/" & mmG & "/" & aaaaG
      Catch ex As Exception
       GoTo sort
      End Try
      If aaaaG = 1792 Then
       If mmG < 9 Then GoTo sort
       If mmG = 9 And jjG < 22 Then
    sort:  MsgBox("Date invalide : (j/m/a) " & vbLf & vbLf & "Du 22 septembre 1792 au 31 décembre 1805", vbExclamation)
        Label1.Text = njG(7)
        Exit Sub
       End If
      End If
      '
      Dim dateG As New DateTime(aaaaG, mmG, jjG) ' dimanche = 0
      Label1.Text = njG(dateG.DayOfWeek)
      '
      For i = 1 To DateDiff(DateInterval.Day, d1, dG)
       jjR = jjR + 1
       Select Case mmR
        Case 1 To 11 ' mois 30 j
         If jjR > 30 Then
          jjR = 1
          mmR = mmR + 1 ' an 12 mois
         End If
        Case 12 ' mois 35 ou 36 j
         Select Case aaR
          Case 1, 2 : GoTo nb ' 1792-93 1794
          Case 3 : If jjR > 36 Then GoTo rab ' 1795
          Case 4, 5, 6 : GoTo nb ' 1796 1797 1798
          Case 7 : If jjR > 36 Then GoTo rab ' 1799
          Case 8, 9, 10 : GoTo nb ' 1800, 1801, 1802
          Case 11 : If jjR > 36 Then GoTo rab ' 1803
          Case 12, 13, 14 ' 1804 1805
    nb:      If jjR > 35 Then ' mois 36 bissextile
    rab:      jjR = 1
            mmR = 1
            aaR = aaR + 1 ' an 1792 - 1805 = 14
           End If
         End Select ' aaR
       End Select ' mmR
      Next i
      '
      ComboBox4.SelectedIndex = jjR - 1
      Label2.Text = njR(CInt(Mid(ComboBox4.Text, 2, 1)))
      ComboBox5.SelectedIndex = mmR - 1
      ComboBox6.SelectedIndex = aaR - 1
     End Sub
    
    
     Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      Dim d1 As Date = 21 & "/" & 9 & "/" & 1792 ' calcule date grégorienne
      Dim ladate As Date
      Dim jjG As Byte
      Dim mmG As Byte
      Dim aaaaG As Integer
      Dim jjRdemande As Byte = ComboBox4.SelectedIndex + 1
      Dim mmRdemande As Byte = ComboBox5.SelectedIndex + 1
      Dim aaRdemande As Byte = ComboBox6.SelectedIndex + 1
      Dim jjR As Byte = 1
      Dim mmR As Byte = 1
      Dim aaR As Byte = 1
      Dim i As Integer
      Dim dMaxi As Date = "31/12/1805"
      '
      For i = 1 To DateDiff(DateInterval.Day, d1, dMaxi) ' 4848
       ladate = d1.AddDays(i)
       If aaRdemande = aaR Then
        If mmRdemande = mmR Then
         If jjRdemande = jjR Then GoTo ok
        End If
       End If
       jjR = jjR + 1
       Select Case mmR
        Case 1 To 11
         If jjR > 30 Then
          jjR = 1
          mmR = mmR + 1
         End If
        Case 12
         Select Case aaR
          Case 1, 2 : GoTo nb ' 1792-93 1794
          Case 3 : If jjR > 36 Then GoTo rab ' 1795
          Case 4, 5, 6 : GoTo nb ' 1796 1797 1798
          Case 7 : If jjR > 36 Then GoTo rab ' 1799
          Case 8, 9, 10 : GoTo nb ' 1800, 1801, 1802
          Case 11 : If jjR > 36 Then GoTo rab ' 1803
          Case 12, 13, 14 ' 1804 1805
    nb:      If jjR > 35 Then
    rab:      jjR = 1
            mmR = 1
            aaR = aaR + 1
           End If
         End Select ' aaR
       End Select ' mmR
      Next i
      MsgBox("Date invalide : (j/m/a) " & vbLf & vbLf & "Du 1 vendémiaire I au 10 nivôse XIV", vbExclamation)
      Label2.Text = njR(10)
      Exit Sub
      '
    ok: Label2.Text = njR(CInt(Mid(ComboBox4.Text, 2, 1)))
      jjG = CByte(Mid(ladate, 1, 2)) - 1
      mmG = CByte(Mid(ladate, 4, 2)) - 1
      aaaaG = CInt(Mid(ladate, 7, 4)) - 1792
      ComboBox1.SelectedIndex = jjG
      Label1.Text = njG(ladate.DayOfWeek)
      ComboBox2.SelectedIndex = mmG
      ComboBox3.SelectedIndex = aaaaG
     End Sub
    End Class
    
    

    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Fractionné Alex Petrescu mercredi 5 janvier 2011 09:04 meilleur article
    vendredi 10 décembre 2010 10:45