掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
OSの起動時刻の取得 (ID:8972)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>と書いたらおかしな値がでました。どこかおかしいですか? ということは、私のコードでエラーにならなかったのですね。 TimeStampは時間だけを得る関数で、DateTimeは日付と時刻。 Now - DateTimeとやってしまうと、年月の引き算も入ってしまっておかしな値が生まれますが、333さんが書いているように、GetTickCount の戻り値は DWORD。 TTimeStamp型に代入できて処理できてしまうのは変だと引っかかっていたのですが、Delphi3だと通ってしまうようです。 Delphi6で試したらエラーになりました。というわけで、私のコードは誤りです。 また、「逆算すれば得られます」と簡単に書いてしまいましたが、結構面倒ですね。 Delphi6でテストしたコードを載せます。 ただし、午前0時をまたぐ場合については、更に条件分岐が必要となります。 また、333さんの言う49時間も、その場合にはお手上げでしょう。 Windowsが起動したときに、出勤時刻をどこかに記録していてくれない限り。 procedure TForm1.Button1Click(Sender: TObject); var StartTime: TDateTime; NowMse, PastMse, StartMse: LongInt; StartH, StartM, StartS, StartMs, TempS: Word; begin // 現在時刻を本日の0時から経過したミリ秒で得る NowMse := MilliSecondOfTheDay(Now); // 起動時からの経過時間をミリ秒で得る PastMse := GettickCount; // 起動時刻を本日の0時から経過したミリ秒数で得る StartMse := NowMse - PastMse; // 起動時刻を時分秒ミリ秒に分ける TempS := StartMse div 1000; StartH := TempS div 3600; StartM := TempS div 60 mod 60; StartS := TempS mod 60; StartMs := StartMse mod 1000; // TdateTime型を生成する StartTime := EnCodeTime(StartH, StartM, StartS, StartMs); Showmessage(TimeToStr(StartTime)); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.