OVH Cloud OVH Cloud

Convertir un CTime C++ en DateTime C#

5 réponses
Avatar
Chris
Bonjour,

Je récupère un UInt32 dans un flux fichier qui est un CTime en C++ (le
fichier est écrit par un programme C++ et je l'ouvre en CSharp).

Comment le transformer en DateTime C# ?

merci

--
Christophe

5 réponses

Avatar
peeter
System.Convert.ToDateTime(int value)
"Chris" a écrit :

Bonjour,

Je récupère un UInt32 dans un flux fichier qui est un CTime en C++ (le
fichier est écrit par un programme C++ et je l'ouvre en CSharp).

Comment le transformer en DateTime C# ?

merci

--
Christophe



Avatar
Chris
peeter a écrit :
System.Convert.ToDateTime(int value)



non ça ne fonctionne pas.

--
Christophe
Avatar
Pierre TCHEKOUTEU [SELF-INFORMATIQUE]
Bonjour,
Crée une petite fonction qui reçoit en paramètre un objet string qui
réprésente la date au format du fichier et
retourne un objet DateTime.
utilise la méthode "substring" ou "split" de la classe string pour extraire
jj, mm, aa de ton objet date.
convertit "jj" "mm" "aa" en int.
crée une nouvelle instance de Date avec jj, mm aa

Exple

private DateTime stringToDate(string jjmmaa)
{
int iJJ = int.parse(jjmmaa.substring(0,2));
int iMM = int.parse(jjmmaa.substring(3,2));
int iAAAA = int.parse("20" + jjmmaa.substring(5,2));
DateTime myNewDate = new DateTime(iAAAA, iMM, iJJ);
return myNewDate ;
}

si le format de date du fichier a des délimiteurs, "split" peut être facile
à utiliser que substring.
fait cela dans un try /catch afin de lever une exception dans le cas où
toutes les dates ne respecteraient pas ce format.
je l'ai déjà fait avec une instance DateTime ayant comme 1er paramètre
l'année sur 4 chiffres.
ça marche.

tu va ainsi parcourir ton fichier et modifier les dates.

@+


----- Original Message -----
From: "Chris"
Newsgroups: microsoft.public.fr.dotnet.csharp
Sent: Wednesday, December 22, 2004 11:56 AM
Subject: Re: Convertir un CTime C++ en DateTime C#


peeter a écrit :
> System.Convert.ToDateTime(int value)

non ça ne fonctionne pas.

--
Christophe


Avatar
Simon Mourier [MS]
J'imagine que le uint32 est de type time_t au départ?
Voir l'excellent article ici pour plus d'infos sur tout cela.

http://www.codeproject.com/datetime/datetimedisc.asp?df0&forumid579&exp=0&selectv0658

et une solution ici:
http://blogs.msdn.com/brada/archive/2003/07/30/50205.aspx
public static DateTime Time_T2DateTime(uint time_t)
{
long win32FileTime = 10000000*(long)time_t + 116444736000000000;
return DateTime.FromFileTimeUtc(win32FileTime);
}

Simon.

"Chris" a écrit dans le message de news:
%
peeter a écrit :
System.Convert.ToDateTime(int value)



non ça ne fonctionne pas.

--
Christophe


Avatar
Chris
Simon Mourier [MS] a écrit :

public static DateTime Time_T2DateTime(uint time_t)
{
long win32FileTime = 10000000*(long)time_t + 116444736000000000;
return DateTime.FromFileTimeUtc(win32FileTime);
}




rahhhh !!! j'avais bien saisi qu'en c++ on avait le nombre de secondes
écoulées depuis le 1/1/1970 mais je n'arrivais pas à le convertir
(j'étais parti sur un décalage de bits).

merci beaucoup (je cherche depuis ce matin).

--
Christophe