質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

2回答

2239閲覧

C#でのPC起動からの経過時間の取得方法について

renit

総合スコア13

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

1クリップ

投稿2018/10/29 13:37

こんばんは、私は今、PCの起動してからの時間を取得したいと思って、
以下のコードを書いたのですが、いい感じに動作してくれません。時間にズレが出ます。

C#

1public partial class Form1 : Form 2 { 3 PerformanceCounter perfCPUconter = new PerformanceCounter("Processor Information", "% Processor Time", "_Total"); 4 PerformanceCounter perfMemconter = new PerformanceCounter("Memory", "Available MBytes"); 5 PerformanceCounter perfSystemconter = new PerformanceCounter("System", "System Up Time"); 6 public Form1() 7 { 8 InitializeComponent(); 9 } 10 11 private void timer1_Tick(object sender, EventArgs e) 12 { 13 label1.Text = "CPU使用率" + " " + (int)perfCPUconter.NextValue() + " " + "%"; 14 label2.Text = "利用可能メモリ量" + " " + (int)perfMemconter.NextValue() + " " + "MB"; 15 label3.Text = "PC起動時間" + " " + (int)perfSystemconter.NextValue() / 600 / 600 + "日" + (int)perfSystemconter.NextValue() / 60 / 60 + "時間" + (int)perfSystemconter.NextValue() / 6 / 6 + "分"; 16 } 17 }

イメージ説明
このように書くと時間にずれが生じます。
一番簡単な書き方で高精度のものを書きたいのですがわからないため質問させていただきました。
ご回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

一応自己解決したので掲載しておきます。こちらのサイト
で見つけたのですが、サイトのコードを使用してみたところ使えたのでこちらを採用しました。

C#

1int tc = Environment.TickCount; // ミリ秒単位で経過時間を取得 2 3 TimeSpan ts = new TimeSpan(0, 0, 0, 0, tc); // 値を TimeSpan 型へ変換する 4 5 label1.Text ="経過時間 " + ts.Days + "日" +ts.Hours + "時間" +ts.Minutes + "分" +ts.Seconds + "秒";

ご回答してくださった方ありがとうございました。
またの機会等がありましたらよろしくお願いいたします。

投稿2018/10/29 14:26

renit

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ズレが出るとはどの程度のズレなんでしょうか。

起動してからの経過時間は、TickCount というのもありますね

投稿2018/10/29 13:41

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

renit

2018/10/29 13:59

時間のズレは画像を見ていただけると幸いです。 TikCountとはどのようにすれば出来るでしょうか?
renit

2018/10/29 14:07

一応できたと思うのですが、 表示する形式を ○○日○○時間○○分という形式で表示したいのですが可能でしょうか?また、長時間PCをつけるため値がオーバーフローなどはしないのでしょうか... こういういコードはあまり書いたことがないもので
y_waiwai

2018/10/29 14:17

TickCountはミリ秒の経過時刻なので、1000で割ると秒が出ます。 これを換算すればいいかと リンク先に書いてありますが、49日程度でオーバフローして0に戻ってしまうので、それ以上の時間が必要なら、TickCountからカレンダの起動日時を求めて、それからの経過時刻を出しようにしたほうがいいですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問