B
brendan.mckenzie
Hello,
I am writing a class to process FoxPro .dbf files, all has been going
well, but I have recently hit a snag. I'm trying to convert FoxPro's
DateTime field (T) to a System.DateTime. FoxPro's field is 2 32bit
integers: one stores the date, the other stores the time, stored in
reverse byte order. (2f 4a 12 9a== 9a 12 4a 2f)
Easy... here's the hard part. The date integer stores the number of
days from 1/1/4712BC (yes... BC). The time integer stores the number
of milliseconds from 00:00:00.
Processing the time was easy ( DateTime.AddMilliseconds() ).
Processing the date, is not.
Is there anyone who can lend a hand and help me process this date?
The date integer: 2453809 should become 20/04/2006
My current process is:
DateTime dt = new DateTime(1, 1, 1);
dt = dt.AddDays(days);
dt = dt.AddYears(-4713);
This results in a DateTime which is 2 days off, and I'm afraid it may
result in more problems due to leap years with other dates.
Can anyone help me out with this?
Thanks!
Brendan
I am writing a class to process FoxPro .dbf files, all has been going
well, but I have recently hit a snag. I'm trying to convert FoxPro's
DateTime field (T) to a System.DateTime. FoxPro's field is 2 32bit
integers: one stores the date, the other stores the time, stored in
reverse byte order. (2f 4a 12 9a== 9a 12 4a 2f)
Easy... here's the hard part. The date integer stores the number of
days from 1/1/4712BC (yes... BC). The time integer stores the number
of milliseconds from 00:00:00.
Processing the time was easy ( DateTime.AddMilliseconds() ).
Processing the date, is not.
Is there anyone who can lend a hand and help me process this date?
The date integer: 2453809 should become 20/04/2006
My current process is:
DateTime dt = new DateTime(1, 1, 1);
dt = dt.AddDays(days);
dt = dt.AddYears(-4713);
This results in a DateTime which is 2 days off, and I'm afraid it may
result in more problems due to leap years with other dates.
Can anyone help me out with this?
Thanks!
Brendan