Unixタイムスタンプを取得するには?

解決


かんとく  2009-11-11 20:20:35  No: 36139  IP: 192.*.*.*

お世話になっております。

XP,Delphi2007です。

現在の時刻をunixタイムスタンプに変換するには、どうしたらよいでしょうか。

1970年1月1日0:00から現在の時刻までの秒数を計算すればよいと思うのですが、それを求めるためにどうしたらよいか分かりません。

よろしくお願いします。

編集 削除
igy  2009-11-11 21:12:27  No: 36140  IP: 192.*.*.*

>1970年1月1日0:00から現在の時刻までの秒数を計算すればよいと思うのですが、
>それを求めるためにどうしたらよいか分かりません。

DaysBetween 関数で、現在の日付の0:00までの日数を取得し、それを秒数に。
現在の日付の0:00からの現在の時刻までの秒数を算出し、加算。

でいかがですか?

編集 削除
算数の問題  2009-11-11 21:21:23  No: 36141  IP: 192.*.*.*

だよね
function DateTimeToUnix(aDateTime: TDateTime): Integer;
begin 
  result := Round((aDateTime - StrToDate('1970/01/01')) * (60*60*24));
end;

編集 削除
igy  2009-11-11 21:40:42  No: 36142  IP: 192.*.*.*

>DaysBetween 関数で、現在の日付の0:00までの日数を取得し、それを秒数に。
>現在の日付の0:00からの現在の時刻までの秒数を算出し、加算。
>でいかがですか?

上のようにわざわざ2つに分ける必要なく、
“算数の問題”さんが提示したように、2つの値の差を秒数にするほうが、簡単でしたね。

編集 削除
monaa  2009-11-11 23:25:23  No: 36143  IP: 192.*.*.*

酔ってるのでとんちんかんな事書いてるかもしれませんが、
TDateTimeの0が  1899 年 12 月 30 日午前 12:00
だから常に+71年 = 71*60*60*24するだけす。
定数なので一回の加算で処理した方がスマートかと。

編集 削除
ttt  2009-11-12 02:22:56  No: 36144  IP: 192.*.*.*

DateTimeToUnix関数ではだめなんでしょうか。

編集 削除
monaa  2009-11-12 09:43:39  No: 36145  IP: 192.*.*.*

昨日の書き込みは無視してやってください。
すみません…。

編集 削除
かんとく  2009-11-14 20:32:18  No: 36146  IP: 192.*.*.*

ありがとうございます。

  result := Round((aDateTime - StrToDate('1970/01/01')) * (60*60*24));
でよかったです。

ありがとうございました。

編集 削除