OVH Cloud OVH Cloud

Convertir une date ?

9 réponses
Avatar
SuP-Merg
Bonjour,

Je recherche comment convertir une date en Integer
Mon probleme c'est que je sais pas trop comment faire pour calculer
plusieurs date avec la date actuelle, je recherche a avoir la date la plus
proche de la date actuelle


Merci de vos aides

9 réponses

Avatar
Zoury
> Je recherche comment convertir une date en Integer



Tu peux nous expliquer pourquoi ?


Mon probleme c'est que je sais pas trop comment faire pour calculer
plusieurs date avec la date actuelle, je recherche a avoir la date la plus
proche de la date actuelle



Qu'entends-tu par "calculer plusieurs date avec la date actuelle" et par
"date la plus proche" ?!

Mets nous un peu dans le contexte de ton problème. ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic Classique
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/
Avatar
SuP-Merg
Bonjour Zoury et merci d'avoir repondu

J'ai recuperé des dates de fichier (une 30 taine de fichiers) et je souhaite
recuperer la date qui est la plus proche de celle du systeme

Je viens de trouver DateDiff(Interval, Date1, Date2) qui me convien
complement, maintenant que j'ai soustrais toutes les dates je sais pas trop
comment faire pour recuperer la plus recente

Faut-il refaire un tableau ?


"Zoury" a écrit dans le message de
news:
> Je recherche comment convertir une date en Integer

Tu peux nous expliquer pourquoi ?


> Mon probleme c'est que je sais pas trop comment faire pour calculer
> plusieurs date avec la date actuelle, je recherche a avoir la date la


plus
> proche de la date actuelle

Qu'entends-tu par "calculer plusieurs date avec la date actuelle" et par
"date la plus proche" ?!

Mets nous un peu dans le contexte de ton problème. ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic Classique
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/




Avatar
Pierre Alexis [MVP]
Salut,

Tu as écrit :

Je viens de trouver DateDiff(Interval, Date1, Date2) qui me convien
complement, maintenant que j'ai soustrais toutes les dates je sais pas trop
comment faire pour recuperer la plus recente

Faut-il refaire un tableau ?



Meuuuuuh non ;-) Une simple boucle fera l'affaire :-) Le principe est simple :
il suffit de boucler sur tes "n" dates et à chaque tour de voir si la date sur
laquelle tu es train de boucler est plus "proche de la date actuelle" que "la
plus proche déjà trouvée".

Donc au départ tu prend la première date (celle-là tu la compare avec rien).
Ensuite tu prends la deuxième date. Tu regardes si elle plus proche que la
première. Si oui, tu sauves la deuxième date. Sinon tu gardes la première.
Ensuite tu prends la troisième date et tu compares avec la date sauvée et
ainsi de suite...

--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
Zoury
reSalut!

et si ton application doit tenir compte de l'heure avancé et de l'heure
normal, il est préférable de convertir les dates en temps UTC avant
d'effectuer tes calculs...

voici un article intéressant sur les meilleures pratiques concernant la
structure DateTime.
http://msdn.microsoft.com/library/en-us/dndotnet/html/datetimecode.asp


Et voici un exemple de la démarche expliqué par Pierre.
Cette fonction te renvoit le dernier fichier ayant été modifié dans un
répertoire donné.
'***
Option Explicit On

Imports System.IO

Module Module1

Sub Main()
Dim sFile As String
sFile = GetLastModifiedFile("c:")
Console.WriteLine("fichier : {0}", sFile)
Console.WriteLine("date de modification : {0}",
File.GetLastWriteTime(sFile))
Console.WriteLine()
Console.WriteLine("Press Enter to quit ...")
Console.ReadLine()
End Sub

Private Function GetLastModifiedFile _
( _
ByVal Path As String, _
Optional ByVal SearchPattern As String = "*.*" _
) As String

Dim sFiles() As String
Dim i As Int32
Dim dtNow As DateTime
Dim tsDiff As TimeSpan
Dim tsSmallestDiff As TimeSpan
Dim iSmallestDiffIndex As Int32

dtNow = DateTime.Now
sFiles = Directory.GetFiles(Path, SearchPattern)
tsSmallestDiff = TimeSpan.MaxValue
For i = 0 To sFiles.Length - 1
tsDiff dtNow.ToUniversalTime().Subtract(File.GetLastWriteTimeUtc(sFiles(i)))
If (tsDiff.CompareTo(tsSmallestDiff) = -1) Then
iSmallestDiffIndex = i
tsSmallestDiff = tsDiff
End If
Next i

Return sFiles(iSmallestDiffIndex)

End Function

End Module
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic Classique
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/
Avatar
Zoury
> voici un article intéressant sur les meilleures pratiques concernant la
structure DateTime.



J'avais lu l'article il y a un bout de temps déjà ... :O)

remplace :
dtNow = DateTime.Now
par :
dtNow = DateTime.UtcNow()

et aussi :
dtNow.ToUniversalTime().Subtract(File.GetLastWriteTimeUtc(sFiles(i)))
par :
tsDiff = dtNow.Subtract(File.GetLastWriteTimeUtc(sFiles(i)))


afin d'appliquer la règle 8 correctement. ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/
Avatar
SuP-Merg
Aurais tu un exemple ?
ou un site ?

Merci

"Pierre Alexis [MVP]" a écrit dans le message de
news:OM$
Salut,

Tu as écrit :

> Je viens de trouver DateDiff(Interval, Date1, Date2) qui me convien
> complement, maintenant que j'ai soustrais toutes les dates je sais pas


trop
> comment faire pour recuperer la plus recente
>
> Faut-il refaire un tableau ?

Meuuuuuh non ;-) Une simple boucle fera l'affaire :-) Le principe est


simple :
il suffit de boucler sur tes "n" dates et à chaque tour de voir si la date


sur
laquelle tu es train de boucler est plus "proche de la date actuelle" que


"la
plus proche déjà trouvée".

Donc au départ tu prend la première date (celle-là tu la compare avec


rien).
Ensuite tu prends la deuxième date. Tu regardes si elle plus proche que la
première. Si oui, tu sauves la deuxième date. Sinon tu gardes la première.
Ensuite tu prends la troisième date et tu compares avec la date sauvée et
ainsi de suite...

--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/




Avatar
Pierre Alexis [MVP]
Salut Zoury,

Tu as écrit :

Et voici un exemple de la démarche expliqué par Pierre.



T'es trop gentil (love) LOL

--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
Bismark Prods
Et si tu fais un Math.Max sur chacun des timestamps UNiX ... lol ca va bcp
plus vite !

Bismark

"SuP-Merg" a écrit dans le message de
news:cf858t$kcv$
Aurais tu un exemple ?
ou un site ?

Merci

"Pierre Alexis [MVP]" a écrit dans le message


de
news:OM$
> Salut,
>
> Tu as écrit :
>
> > Je viens de trouver DateDiff(Interval, Date1, Date2) qui me convien
> > complement, maintenant que j'ai soustrais toutes les dates je sais pas
trop
> > comment faire pour recuperer la plus recente
> >
> > Faut-il refaire un tableau ?
>
> Meuuuuuh non ;-) Une simple boucle fera l'affaire :-) Le principe est
simple :
> il suffit de boucler sur tes "n" dates et à chaque tour de voir si la


date
sur
> laquelle tu es train de boucler est plus "proche de la date actuelle"


que
"la
> plus proche déjà trouvée".
>
> Donc au départ tu prend la première date (celle-là tu la compare avec
rien).
> Ensuite tu prends la deuxième date. Tu regardes si elle plus proche que


la
> première. Si oui, tu sauves la deuxième date. Sinon tu gardes la


première.
> Ensuite tu prends la troisième date et tu compares avec la date sauvée


et
> ainsi de suite...
>
> --
> Pierre ALEXIS - MVP Visual Basic Classique
> Courriel & messenger :
> FAQ Visual Basic : http://faq.vb.free.fr/
>
>




Avatar
SuP-Merg
Je vais regarder ça, merci



"Zoury" a écrit dans le message de
news:
reSalut!

et si ton application doit tenir compte de l'heure avancé et de l'heure
normal, il est préférable de convertir les dates en temps UTC avant
d'effectuer tes calculs...

voici un article intéressant sur les meilleures pratiques concernant la
structure DateTime.
http://msdn.microsoft.com/library/en-us/dndotnet/html/datetimecode.asp


Et voici un exemple de la démarche expliqué par Pierre.
Cette fonction te renvoit le dernier fichier ayant été modifié dans un
répertoire donné.
'***
Option Explicit On

Imports System.IO

Module Module1

Sub Main()
Dim sFile As String
sFile = GetLastModifiedFile("c:")
Console.WriteLine("fichier : {0}", sFile)
Console.WriteLine("date de modification : {0}",
File.GetLastWriteTime(sFile))
Console.WriteLine()
Console.WriteLine("Press Enter to quit ...")
Console.ReadLine()
End Sub

Private Function GetLastModifiedFile _
( _
ByVal Path As String, _
Optional ByVal SearchPattern As String = "*.*" _
) As String

Dim sFiles() As String
Dim i As Int32
Dim dtNow As DateTime
Dim tsDiff As TimeSpan
Dim tsSmallestDiff As TimeSpan
Dim iSmallestDiffIndex As Int32

dtNow = DateTime.Now
sFiles = Directory.GetFiles(Path, SearchPattern)
tsSmallestDiff = TimeSpan.MaxValue
For i = 0 To sFiles.Length - 1
tsDiff > dtNow.ToUniversalTime().Subtract(File.GetLastWriteTimeUtc(sFiles(i)))
If (tsDiff.CompareTo(tsSmallestDiff) = -1) Then
iSmallestDiffIndex = i
tsSmallestDiff = tsDiff
End If
Next i

Return sFiles(iSmallestDiffIndex)

End Function

End Module
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic Classique
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/