C# has a DateTime.FromOADate() method.
What is the equivalent of DateTime.FromOADate() in Java ?
This is my C# code :
var b = new byte[8];
b[0] = 0x20;
b[1] = 0x64;
b[2] = 0xa8;
b[3] = 0xac;
b[4] = 0xb6;
b[5] = 0x65;
b[6] = 0xe4;
b[7] = 0x40;
var dbl = BitConverter.ToDouble(b, 0);
var dt = DateTime.FromOADate(dbl);
This is the output :
2014-05-14T17:00:21
How can i convert this byte array to java?
解决方案
Did you realize that your binary data is the binary represantation of an OLE Automation date value?
So instead of getting long, you should get a double value from your array.
var b = new byte[8];
b[0] = 0x20;
b[1] = 0x64;
b[2] = 0xa8;
b[3] = 0xac;
b[4] = 0xb6;
b[5] = 0x65;
b[6] = 0xe4;
b[7] = 0x40;
var dbl = BitConverter.ToDouble(b, 0);
var dt = DateTime.FromOADate(dbl);
Console.WriteLine("{0:s}", dt);
Result is :
2014-05-14T17:00:21
I think the valid question should be: What is the equivalent of DateTime.FromOADate() in Java ?
Answer is:
public static Date fromDoubleToDateTime(double OADate)
{
long num = (long) ((OADate * 86400000.0) + ((OADate >= 0.0) ? 0.5 : -0.5));
if (num < 0L) {
num -= (num % 0x5265c00L) * 2L;
}
num += 0x3680b5e1fc00L;
num -= 62135596800000L;
return new Date(num);
}