Manipulation des Date et Heures en VB6

cs_megamario Messages postés 145 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 14 février 2013 - 25 juin 2010 à 09:17
cs_megamario Messages postés 145 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 14 février 2013 - 25 juin 2010 à 14:56
Bonjour,

Je dois modifier un programme qui est en VB6.

J'ai une manipulation de Date et heure à faire

Voici un exemple:Je dois récupérer des données d'une supervision. Dans un 1er temps j'interroge les registres du système il me revoie sous forme d'une chaine, le nom de la mesure, l'unité de la mesures, le nombre de données dans le registre et la période d'échantillonnage.

La période d'échantillonnage représente par exemple 10 minutes.

Ensuite je récupère les données du registre sous forme de chaine codé en exa de 16Bits séparé par des / dont les deux premières données sont: 1er bloc, le jour le mois et l'année, 2éme bloc l'heure minute seconde.

Pour le moment j'arrive à mettre ça sous la forme string "jj/MM/aaaa hh:mm:ss"

Ensuite il y a toutes les données donc je dois ajouter la période d'échantillonnage a chaque mesure pour formater la ligne:jj/MM/aaaa hh:mm:ss;LaDonnée

Il arrive que les données dans le système ne soient plus enregistrées donc au redémarrage de l'enregistrement, les deux premières lignes sont réécrite avec la nouvelle date et heure. Il faut que je compare cette nouvelle date avec la dernière enregistrée. Pour faire mon traitement entre l'arrêt et la reprise (Mise à 0 des mesures par exemple)

J'essaie pour le moment avec l'Objet "Date" mais on m'a parlé de "DTPicker" mais je ne vois qu'un contrôle graphique.

Enfin si vous avez des infos pour la manipulation de Date et Heures. De mon côté je continue à chercher, car je suis bloqué là-dessus pour le moment

Merci de votre éventuelle aide ou redirection vers des sites pouvant m'aider. J'en ai déjà trouvé mais pas forcement utile pour moi.
A voir également:

4 réponses

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
25 juin 2010 à 09:55
salut, dateTimePicker est comme son nom l'indique un control graphique pour la selection d'une date et/ou d'une heure, donc pas spécialement utilse pour toi. De toute façon il retournera un objet date.
regarde dans les propriétées de DATE, il y de quoi calculer des delta de temps, mise en forme (format) etc...
Pour ta gestion de donnée je ferais une petite class ou au moins un tableau (date,string ou double) plutot que de passer par un Date.tostring & données.tostring. Plus simple pour les envoyer directement sur une listView, ou vers un CSV pour export.
Ex :
<Serializable()> Public Class Hmi
Public lignes As New List(Of hmi_ligne) 'déclare et intancie (new) la list des lignes de data
public sub save(), load(), ToCsv(), TolistView() etc....

'et par exemple pour ton besoin sur les dates :
'----------------------------------------------------------------------
' Function qui retourne le nb de jour depuis la premiére date saisie
'----------------------------------------------------------------------
Public Function Nb_jour() As String
If Me.lignes.Count = 0 Then Return "0" : Exit Function
Dim Deb_date As Date = Me.lignes.Item(Me.lignes.Count - 1).L_date
Dim interval As TimeSpan = Date.Now.Subtract(Deb_date) 'différence en jours
Return CType(interval.TotalDays, Integer).ToString
End Function
End Class '

<Serializable()> Public Class hmi_ligne
Public L_ID As String 'index des lignes
Public L_date As Date ' la date de l'opération
Public L_données As String ou double
End class

Voila pour le principe que j'utiliserai. @++
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 juin 2010 à 10:04
Salut

Le code fourni par adn56 ne semble pas être du VB6 mais du VB.Net.

Pour les manipulations de date (je n'ai pas trop compris ce que tu as à faire), il y a :

DateDiff qui te calculera une différence entre deux dates en année, mois, jour, heure, minutes OU secondes

DateAdd qui te permettra de récupérer une date à partir d'une autre date auquel tu pourras ajouter ou soustraire un nombre d'année, mois, jour, heure, minutes OU de secondes

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
25 juin 2010 à 12:55
Oups autant pour moi, désolé.
0
cs_megamario Messages postés 145 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 14 février 2013
25 juin 2010 à 14:56
Bonjour à tous et merci.

Je ne vous est pas répondu rapidement car cela viens de changer pour le jour mois année.

Maintenant la chaine contenant le jour le mois est l'année est remplacé par le nombre de jour depuis le 01/01/2000 (date d'initialisation de la supervision).

Pour le moment je m'occupe de l'affichage sur la page pour vérifier que je décompose bien m'a trame, j'ai presque fini.

Dans le principe imaginer que:
J'ai une commande qui me renvoie:
Le nom de la mesure/L'unité/le diviseur/la fréquence de pooling

C'est avec cette fréquence de pooling que je vais déduire l'heure et la date de mes mesures, pour l'exemple on va dire 10 pour 10 minutes entre chaque mesures

Dans la commande pour récupérer les données:

j'ai une entête avec 2 ligne:
La date
L'heure
Puis les données

Mais il arrive que le système n'a rien à enregistrer et à la reprise il remet l'entête avec la nouvelle date et heures puis les données

ce qui donne:
Date/Heure/Donnée/Donnée/Donnée/Donnée/Donnée/Donnée/Donnée/Donnée/Donnée/Date/Heure/Donnée/Donnée/Donnée etc..
Ici on va dire que la date et l'heure est:
01/01/2010 08:00:00

Et moi je dois le mettre sous la forme

01/01/2010 08:00:00;ladonnée
01/01/2010 08:10:00;ladonnée
01/01/2010 08:20:00;ladonnée
01/01/2010 08:30:00;ladonnée
01/01/2010 08:40:00;ladonnée
01/01/2010 08:50:00;ladonnée
01/01/2010 09:00:00;ladonnée
01/01/2010 09:10:00;ladonnée
01/01/2010 09:20:00;ladonnée <-Dernière mesure avant lecture d'une nouvelle date
01/01/2010 09:30:00;0 <-Mise à 0 de la donnée à la date suivante de la (dernière date + les 10 minutes)avant la lecture de la nouvelle date.
02/01/2010 06:50:00;0 <-Mise à 0 de la donnée date précédente de la nouvelle heure
02/01/2010 07:00:00:Ladonnée <-Démarrage avec la nouvelle heures
02/01/2010 07:10:00:Ladonnée
etc...

Le but ce sa et de faire des courbes de cette mesures et lorsqu'il y a rien de mesuré on met 0. Et cela évite de surcharger la mémoire du système et surtout les temps de transferts qui seront par GSM.
0
Rejoignez-nous