The c code : date = (time_t) ((((ULONG)b1[12])<<24) | (((ULONG)b1[13])<<16) | (((ULONG)b1[14])<<8) | (ULONG)b1[15]); /* date in standard UNIX/ANSI format */ The data it reads : 0F 5B 98 56 Output from the c version is : Thu Mar 02 04:30:14 1978 My dodgy delphi conversion : DateTimeToString(vDateTime, 'ddd mmm dd hh:nn:ss yyyy', ((FM1.ByteArray[12] shl 24) or (FM1.ByteArray[13] shl 16) or (FM1.ByteArray[14] shl 08) or (FM1.ByteArray[15]))); I get this output : Mon Nov 22 00:00:00 51991 Its fuckin me off .. :( Is it the UNIX/ANSI bit ?