Error converting FILETIME to DateTime

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Hi,
it should be simple,
put FILETIME in a Long
conver it in date using the DateTime.FromFileTimeUtc

The help even says: Converts the specified Windows file time to an
equivalent UTC time.


Now why happens this:
original filetime 21/02/2006 00:33:29

bytes:
80 C2 E6 AB
6D 36 C6 01

when I convert it I have:
1) 20/02/2006 22:26:19
2) 20/02/2006 22:26:19

Code:
Dim ad3 As System.DateTime
Dim aLn1 As Long
Dim ad1 As System.Runtime.InteropServices.ComTypes.FILETIME

ad1.dwHighDateTime = &H1C6366D
ad1.dwLowDateTime = &HABE6C280

aLn1 = (CLng(ad1.dwHighDateTime) << 32) + CLng(ad1.dwLowDateTime)

ad3 = DateTime.FromFileTimeUtc(aLn1)
Debug.Print("1) " & ad3)
ad3.ToLocalTime()
Debug.Print("2) " & ad3)

and even worst if I do:
ad3 = CDate("21/02/2006 00:33:29")

the Thicks property is equal to:
ad3.Ticks &H8C8049591E69280 Long


please can anyone help me?

Thanks,
M.
 
Cor,
If I understood correctly it should be the function I'm using:
ad3 = DateTime.FromFileTimeUtc(aLn1)


Or I'm doing something wrong?

M
 
MsAvazzi,

I would ignore that function because it is one of the few functions not used
anymore in the version 2.0

Cor
 
Herfried,

You are right,

It means that the English documentation is not up to date but the German one
is.
I was already disapointed about this breaking change.


:-)

Cor
 
Herfried,

You are again right, normally I would have found that as well as first, but
now was I using the by the OP supported link. This is of course not good as
documentation. We know that MSDN2 from expirience.

Cor
 
MSAvazzi,

With all those discussions you would not understand it anymore therefore.

This gives for me the creation date in UTC time which is at my place 2 hours
before the current time.

\\\
Dim fi As New IO.FileInfo("c:\test.txt")
Dim dt As New DateTime(fi.CreationTimeUtc.Ticks)
MessageBox.Show(dt.ToString)
///

I hope this helps,

Cor
 
Cor,
you've been very kind.

Can you please try this code? because I'm getting mad....
Dim dt As New DateTime(&H1C6366CABE6C280)
MessageBox.Show(dt.ToString)
ad3 = CDate("21/02/2006 00:33:29")
MessageBox.Show(dt.Ticks)

I get a meaningless 20/02/0406 22:26:19
(ok this is equal to my code, exactly the same wrong date)


while if I use all other programs (i.e. AXE 3)
I got: 2006/02/21 00:33:29
that is the right information.

the funny thing is that the Ticks of the right date are:
ad3.Ticks &H8C8049591E69280 Long

So it looks like that "old" ticks are different from new ones!


I realy don't understand
 
Msavazi,
Can you please try this code? because I'm getting mad....
Dim dt As New DateTime(&H1C6366CABE6C280)
MessageBox.Show(dt.ToString)
ad3 = CDate("21/02/2006 00:33:29")
MessageBox.Show(dt.Ticks)

No, there are so many datetime formats that I have stopped to look at any
internal format of them.

It gives me only troubles I cannot solve.

Sorry

Cor
 
Back
Top