Les Snippets

Connexion

nom de la saison d'une date

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 19/07/2008 14:52:06 et initié par gillardg [Liste]
Date de mise à jour : 13/04/2009 22:05:29
Vue : 2933
Catégorie(s) : Date & Heure, Trucs & Astuces
Langages dispo pour ce code :
- VB 2005, VB 2008, VB.NET 1.x
- VB 2005, VB 2008, VB.NET 1.x



Langage : VB.NET 1.x , VB 2005 , VB 2008
Date ajout : 19/07/2008
Posté par gillardg [Liste]


''' <summary>

''' MessageBox.Show(saison("19/07/2008"))

''' </summary>

''' <param name="UneDate"></param>

''' <returns="season"</returns>

''' <remarks></remarks>

Function saison(ByVal UneDate As String) As String
Dim num As Int32 = 0 
Dim z As Date
Dim season As String = String.Empty 
Try

If Date.TryParse(UneDate, z) Then

num = z.DayOfYear
Select Case num 
Case Is < 1
season = "error"


MsgBox(num)
Case Is < 81 
If num > 0 Then

season = "hiver"

End If
Case Is < 173 
If num > 80 Then

season = "printemps"

End If
Case Is < 265 
If num > 172 Then

season = "été"

End If
Case Is < 356 
If num > 264 Then

season = "automne"

End If
Case Is < 367 
If num > 355 Then

season = "hiver"

End If

Case Else

season = "error"

End Select

Else

season = "error"

End If
Catch ex As Exception 
Debug.Fail(ex.Message)

End Try
Return season 
End Function

Langage : VB.NET 1.x , VB 2005 , VB 2008
Date ajout : 13/04/2009
Posté par us_30 [Liste]
DateMAJ : 13/04/2009

Function DateSaison(ByVal Y As Double, ByVal K As Integer) As String

' Le code est une adaptation du codage en QuickBasic vers VB2008.

' Le site originel se trouve l'adresse : http://sites.rapidus.net/algauthi/intro.htm

' Y : Annee

' K : 0 3 selon la saison

' 0 : EQUINOXE DE PRINTEMPS

' 1 : SOLSTICE D'ETE

' 2 : EQUINOXE D'AUTOMNE

' 3 : SOLSTICE D'HIVER

' Paramtres

Dim Y1, JD, T, RAD, L, M, C, OME, AP, TEST, COR, Z, F, A, X, B, D, E, DayDec, MN, FRAC, Day, Minute, Heure As Double

Dim Mois As String

'Calcul jour

Y1 = Y / 1000
Select Case KCase 0 
JD = 1721139.2855 + 365.2421376 * Y + 0.067919 * Y1 ^ 2 - 0.0027879 * Y1 ^ 3
Case 1 
JD = 1721233.2486 + 365.2417284 * Y - 0.053018 * Y1 ^ 2 + 0.009332 * Y1 ^ 3
Case 2 
JD = 1721325.6978 + 365.2425055 * Y - 0.126689 * Y1 ^ 2 + 0.0019401 * Y1 ^ 3
Case 3 
JD = 1721414.392 + 365.2428898 * Y - 0.010965 * Y1 ^ 2 - 0.0084885 * Y1 ^ 3

End Select

RAD = Math.PI / 180

Do

T = (JD - 2415020) / 36525

'GEOMETRIC MEAN doubleITUDE

L = 279.69668 + (36000.76892 * T) + 0.0003025 * T ^ 2

'SUN MEAN ANOMALIE

M = (358.47583 + (35999.04975 * T) - 0.00015 * T ^ 2 - 0.0000033 * T ^ 3) / 360

M = (M - Math.Floor(M)) * 360

'EQUATION AU CENTRE

C = (1.91946 - 0.004789 * T - 0.000014 * T ^ 2) * Math.Sin(M * RAD) + (0.020094 - 0.0001 * T) * Math.Sin(M * 2) + (0.000293 * Math.Sin(M * 3))

'TRUE LONGITUDE DU SOLEIL

OME = (259.18 - 1934.142 * T) / 360

OME = (OME - Math.Floor(OME)) * 360 * RAD

AP = (L + C - 0.00569 - 0.00479 * Math.Sin(OME)) / 360

AP = (AP - Math.Floor(AP)) * 360

'CORRECTION

TEST = JD

COR = 58 * Math.Sin((K * 90 - AP) * RAD)

JD = JD + COR
Loop While JD - TEST > 0.001 
JD = JD + 0.5

Z = Math.Floor(JD)

If Z < 2299161 Then

A = Z

Else

X = Math.Floor((Z - 1867216.25) / 36524.25)

A = Z + 1 + X - Math.Floor(X / 4)

End If

B = A + 1524

C = Math.Floor((B - 122.1) / 365.25)

D = Math.Floor(365.25 * C)

E = Math.Floor((B - D) / 30.6001)

F = JD - Z

DayDec = B - D - Math.Floor(30.6001 * E) + F

If E < 13.5 Then

MN = E - 1

Else

MN = E - 13

End If

Mois = vbNullString
Select Case MN 
Case 3
Mois = "MARS"

Case 6 
Mois = "JUIN"
Case 9 
Mois = "SEPTEMBRE"
Case 12 
Mois = "DECEMBRE"

End Select

FRAC = DayDec - Math.Floor(DayDec)

Day = Math.Floor(DayDec)

Heure = Math.Floor(FRAC * 24)

Minute = (FRAC * 24 - Heure) * 60

DateSaison = Day & " " & Mois & " " & Heure & "H" & Math.Floor(Minute) & "MIN"

End Function

Remarque :
Calcul précis des dates des saisons. (Elles varient légèrement chaque année...)

Snippets en rapport avec : Date, Saison



Codes sources en rapport avec : Date, Saison

{PHP} FORMATER DES MILLISECONDES AU FORMAT HH:MM:SS:MMM
Bizarre, mais je n'ai pas trouvé de soluce à mon besoin express. Je me suis donc fait la fonction v...

{Delphi} TIMESERVER V1.0.3
Un programme ridiculement simple par rapport au service qu'il rend ! Se connecte à des serveurs de ...

{PHP} CLASSE DATETIME AVEC TRADUCTION
Début de class DateTime avec prise en charge multi-langue. Pour le moment seul la fonction de for...

{PHP} DIFFÉRENCE ENTRE DEUX DATE EN JOURS (LISTE RÉCUPÉRÉE DANS UN TABLEAU)
Salut J'ai cherché une fonction permettant de récupérer une liste de date entre deux dates donnée...

{C / C++ / C++.NET} CALENDRIER (WIN64)
Un calendrier pour Windows x64. Pur C et ASM, frénétiquement CLASSieux et antiGOTO passent leur che...

{Visual Basic, VB6, VB.NET, VB 2005} SIMULATEUR TRIAL VERSION (BASE DE TRAVAIL POUR DÉBUT)
voilà une petite source de base qui permet de mettre en oeuvre un trial version. un fichier sera gé...

{Visual Basic, VB6, VB.NET, VB 2005} CALENDRIER VB6 ET HORLOGE ANALOGIQUE
ce calendrier s'inspire du calendrier type obtenue sous windows vista et 7 quand on clic dans la bar...

{Javascript / DHTML} HORLOGE TRIPLE AFFICHAGE AU FORMAT AM/PM/24H/DST
HORLOGE TRIPLE AFFICHAGE au format AM/PM/24H/DST dans trois différents pays: la FRANCE, les EMIR...

{Javascript / DHTML} HORLOGE NUMÉRIQUE EN JAVASCRIPT, COMPATIBLE IE ET FF
Voici le code source javascript pour une horloge numérique. Ce script est compatible pour Internet E...

{PHP} CALENDRIER + AGENDA TRÈS SIMPLE (GERER LES JOURS FÉRIÉS ET LES JOURS SPÉCIAUX)
Salut, Voici un script très simple d'une agenda en ligne , au quelle on peut gérer les jours fériée...