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

解決


かんとく  2009-11-12 05:20:35  No: 36139

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

XP,Delphi2007です。

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

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

よろしくお願いします。


igy  2009-11-12 06:12:27  No: 36140

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

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

でいかがですか?


算数の問題  2009-11-12 06:21:23  No: 36141

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


igy  2009-11-12 06:40:42  No: 36142

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

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


monaa  2009-11-12 08:25:23  No: 36143

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


ttt  2009-11-12 11:22:56  No: 36144

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


monaa  2009-11-12 18:43:39  No: 36145

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


かんとく  2009-11-15 05:32:18  No: 36146

ありがとうございます。

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加