掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Cからの移行 ctime関数を移行するには? (ID:823)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
お世話になっております。らりばどです。 C言語ソースからの移行について質問があります。 WindowsAPI関数からの返り値をctime関数で文字列変換した 結果を表示するプログラムがあります。 それをDelphi側に移行しようとした時のことです。 ※前回にカキコしましたイベントログに関するとこです。 ReadEvevtLog関数を使ってイベントログを読み出した後、 日付部分は規定値からの経過秒数で記録されているらしく、 C側ソースでは、 > printf("生成時刻: %s", ctime(&pBuf->TimeGenerated)); と記述されていました。 そこでctime関数の仕様を調べてみると、"1970/01/01 00:00:00" からの経過秒数を文字列化すると見つけました。 そこでDelphi側ソースに、 > //生成時刻の設定 > WkDateTime := 0; > WkDateTime := WkDateTime + EncodeDate(1970,01,01); > WkDateTime := WkDateTime + EncodeTime(0,0,0,0); > WkDateTime := WkDateTime + (PELR.TimeGenerated * (1/24/60/60)); > GenTimeStr := FormatDateTime('yyyy/mm/dd hh:nn:ss',WkDateTime); と記述しました。 しかし実行してみるとちょうど9時間遅れた時刻が表示されます。 これは何故なのでしょうか? 理由をご存知の方、教えて下さい。 ちなみに現在は、 > //生成時刻の設定 > WkDateTime := 0; > WkDateTime := WkDateTime + EncodeDate(1970,01,01); > WkDateTime := WkDateTime + EncodeTime(9,0,0,0); ←"変更箇所" > WkDateTime := WkDateTime + (PELR.TimeGenerated * (1/24/60/60)); > GenTimeStr := FormatDateTime('yyyy/mm/dd hh:nn:ss',WkDateTime); このように書き換えて実行させていますが、理由がわからず このままで良いものか判断がつきません。 よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.