c++ を使用して、double 値である Pascal TDateTime オブジェクトから Unix エポックに変換する必要があります。
考えられる解決策が提案されています ( https://forextester.com/forum/viewtopic.php?f=8&t=1000 ):
unsigned int UnixStartDate = 25569;
unsigned int DateTimeToUnix(double ConvDate)
{
return((unsigned int)((ConvDate - UnixStartDate) * 86400.0));
}
ただし、この変換コードは次のようなエラーを生成します。
TDateTime 時間値 = 37838.001388888886 (05.08.2003 02:00)
これは Unix エポック 1060041719 (05.08.2003 00:01:59) に変換されますが、これは明らかに正しくありません。
この TDateTime 値を正確に変換するにはどうすればよいですか?