Error converting FILETIME to DateTime

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.
 
G

Guest

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


Or I'm doing something wrong?

M
 
C

Cor Ligthert [MVP]

MsAvazzi,

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

Cor
 
C

Cor Ligthert [MVP]

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
 
C

Cor Ligthert [MVP]

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
 
C

Cor Ligthert [MVP]

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
 
G

Guest

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
 
C

Cor Ligthert [MVP]

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top