DOBON.NET DOBON.NETプログラミング掲示板過去ログ

絶対時間の取得

  • 題名: 絶対時間の取得
  • 著者: きた
  • 日時: 2006/11/08 15:26:34
  • ID: 18143
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[VB.NET .NET Framework2.0]
分類:[.NET]

2006/11/08(Wed) 15:33:44 編集(投稿者)
2006/11/08(Wed) 15:33:22 編集(投稿者)

初投稿です。
VB.NET でパソコンの絶対時刻を取得したいと思い、いろいろ調べましたが
わかりません。
ある時点からある時点までの経過時間を計りたいのですが、
途中でシステム時間をユーザが変更した場合、正確な経過時間が計測できません。
それでパソコンが持っている絶対時間のようなものを使いたいと思っています。
なおパソコンは途中で電源を落とすことが前提です。
VB.NETでの取得方法をご存知の方があれば、ご教授おねがいします。
■No18143に返信(きたさんの記事)

こんにちは。

まず「絶対時間」?「絶対時刻」?の定義がわからなかったので、確認させてください。
(混乱するので「絶対時刻」とします)

・絶対時刻はパソコンが持っている時刻である
・絶対時刻はユーザがシステム時間を変更した場合でも変更されない
・絶対時刻はパソコンの電源を落としても途中で止まったりしない

と考えてよろしいでしょうか。

私の知識では、これに一致するものは一般的なパソコンは搭載していないのではな
いかと思うのです。
あるとすれば NTP でサーバへ接続し、日本標準時(か何か標準的な時刻)を取得
するぐらいです( NTP でなくとも、何らかの方法で他の時刻を取得することができれ
ば可能だとは思います)。
ただ、パソコン本体の時刻はシステム時刻しかありませんし、それはユーザが変更
可能であり、電源を入れてからの経過時間という意味ではないこともないですが(T
ickCount で調べてみてください)それはそれで範囲が決まっていてループするわけ
で、しかも電源を切ったらそこで停止してしまうはずです。

となると、ちょっと私の貧困な知識ではわからないです。すいません。

ぽぴ王子さん、返答ありがとうございます。

■No18144に返信(ぽぴ王子さんの記事)
> ■No18143に返信(きたさんの記事)
> > こんにちは。
> > まず「絶対時間」?「絶対時刻」?の定義がわからなかったので、確認させてください。
> (混乱するので「絶対時刻」とします)
> > ・絶対時刻はパソコンが持っている時刻である
> ・絶対時刻はユーザがシステム時間を変更した場合でも変更されない
> ・絶対時刻はパソコンの電源を落としても途中で止まったりしない
> > と考えてよろしいでしょうか。

上記の定義でOKです。

> > 私の知識では、これに一致するものは一般的なパソコンは搭載していないのではな
> いかと思うのです。
> あるとすれば NTP でサーバへ接続し、日本標準時(か何か標準的な時刻)を取得
> するぐらいです( NTP でなくとも、何らかの方法で他の時刻を取得することができれ
> ば可能だとは思います)。
> ただ、パソコン本体の時刻はシステム時刻しかありませんし、それはユーザが変更
> 可能であり、電源を入れてからの経過時間という意味ではないこともないですが(T
> ickCount で調べてみてください)それはそれで範囲が決まっていてループするわけ
> で、しかも電源を切ったらそこで停止してしまうはずです。
> > となると、ちょっと私の貧困な知識ではわからないです。すいません。

やはりそうですか。残念。
NTPサーバもネットワークがない環境を想定しないといけないため使用できません。
またその他の外部からの時刻取得もできない環境です。
どうもありがとうございました。
プログラムを、システム起動時に起動するようにする。
(サービスとか、タスクとか)
プログラム終了時(Windows から、特定のシグナルがくるはず)、現在日時と、これまでの経過時間を書き出しておく。
プログラム起動時(≒システム起動時)に、前回の終了日時と現在日時の差を、それまでの経過時間に足し込む。
1秒ごとに、経過時間を足し込む。


これで、BIOS で時間を変更すること以外は対応できない?
  • 題名: Re[4]: 絶対時間の取得
  • 著者: きた
  • 日時: 2006/11/09 9:43:55
  • ID: 18156
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示

返答ありがとうございます。

■No18149に返信(Jittaさんの記事)
> プログラムを、システム起動時に起動するようにする。
> (サービスとか、タスクとか)
> プログラム終了時(Windows から、特定のシグナルがくるはず)、現在日時と、これまでの経過時間を書き出しておく。
> プログラム起動時(≒システム起動時)に、前回の終了日時と現在日時の差を、それまでの経過時間に足し込む。
> 1秒ごとに、経過時間を足し込む。
> > > これで、BIOS で時間を変更すること以外は対応できない?

なるほどこういった形も考えられますね。
ただ今回はサービスなど別プログラムを使うことはできないため
システムから絶対時刻が取得できたらと思って投稿しました。

DOBON.NET | プログラミング道 | プログラミング掲示板