• 締切済み

C# 時刻 表示

恐れ入ります。 C#で現在時刻の表示方法をお教えください。 通常、*時○分△秒という表示ですが、今回は秒の形式は△.△という形で秒の単位を小数点1桁まで表示したいのです(時間そのものの正確さを要求しているわけではありません。1秒以内に発生する動作の時間を区別したいためです)。 秒までならば、 DateTime.Now.ToString("hh:mm:ss")なる形で得られますので、これを真似して DateTime.Now.ToString("hh:mm:ss.s")としても表示上は確かに秒の小数点まで出力されますが、 Thread.Sleep(100) というメソッドをfor文の中に入れて、0.1秒間隔で表示させることによって確認しようとしましたが、 0.1秒きざみでの時刻表示は得られませんでした。 Thread.Sleep(100) は特に問題ないので、 DateTime.Now.ToString("hh:mm:ss.s") がうまく働いていないためと思われます。 .NETのライブラリも確認したのですが、探し方が悪いためか情報を得ることができませんでした。 上記、質問お分かりになる方はよろしくお願いします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 私は、あまり詳しくありませんが、 DateTime.Now.ToString("hh:mm:ss.s")    ↓ DateTime.Now.ToString("hh:mm:ss.0") または、"hh:mm:ss.00" という表記にすることは出来るのですが、しかし、Now 自体に、秒以下の表示を試したことがありません。ToString の書式表示として、秒以下が、s.00 となるというだけです。 いずれにしても、表示の際には、Timer コントロールを使って、更新していなければ、0.1秒単位の更新はないと思います。それに、秒以下の表示が出来ても、単に、めまぐるしく変わるだけで、画面での肉眼での目視はできないと思います。

hiroshi0915
質問者

お礼

ありがとうございました。 Timerでないとできないのかもしれません。 画面表示ではなく、あるイベントが発生した時刻を記録しておきたかったのです。ご指摘のTimerを使うことにより秒以下は可能と思うのですが、この場合、相対時刻(例えばプログラム起動から)となるように思え、絶対時刻としての若干の誤差は認めてサーバの時刻を記録しておきたいと思っていました。 親切なメールありがとうございました。 今後も何かありましたらまたよろしくお願いします。

関連するQ&A

  • C++/CLIでの時間表示

    VC++2008のC++/CLIで時間の間隔を表示するプログラムを作成しています。 DateTime mySpan = DateTime::Parse(txtStartTime->Text); DateTime dtToday = DateTime::Now::get(); TimeSpan interval = dtToday - mySpan ; String^ strInterval = interval.ToString(); 上記のように,現在と時刻とtxtStartTime->textに表示されている時刻との差を取得しています。 この時, 秒単位の表示が出来ればいいのですが,strInterval の時刻が 00:01:05.12457895... のように不要な小数点まで表示されます。 どのようにすれば, 00:00:00 のような形式で表示できますでしょうか?

  • VC++ DateTimeを使った現在時刻取得

    VC++(CLI)で、現在時刻をstd::string文字列として、取得しようとしています。 時刻取得に、DateTime::ToStringを使うと、System::String でしか取得できません。 DateTime dt = DateTime::Now; String^ st= dt.ToString("HH:mm:ss");                  ↑この形式で、std::string文字列を取り出したい。 System::String から std::stringへの変換は、単純なキャストではなく変換処理が必要なので、他の方法を探しています。 他に思いつくのは、標準関数のtime.h localtimeから変換する方法くらいですが、他にstd::stringで必d家を取得する方法があれば教えてください。 環境: Win7 VC++2010 Express

  • C#のlabelの表示について

    C#のlabelの表示について カテ違いですが、C#のカテゴリがないのでここで質問させていただきます。 以下の時刻を表示するプログラムを作成したのですが、        //現在の時刻を取得  DateTime dt = DateTime.Now; int Second_1 = dt.Second % 10; int Second_2 = dt.Second / 10; int Minute_1 = dt.Minute % 10; int Minute_2 = dt.Minute / 10; int Hour_1 = dt.Hour % 10; int Hour_2 = dt.Hour / 10; label1.Text = Second_1.ToString(); label2.Text = Second_2.ToString(); label3.Text = Minute_1.ToString(); label4.Text = Minute_2.ToString(); label5.Text = Hour_1.ToString(); label6.Text = Hour_2.ToString(); if (int.Parse(label1.Text) == 0 && int.Parse(label2.Text) == 0) { int a; for (a = 0; a < 10; a++) { pictureBox4.Top += 1; System.Threading.Thread.Sleep(30); } for (a = 0; a < 50; a++) { pictureBox4.Top += 5; System.Threading.Thread.Sleep(10); } pictureBox4.Top = 12; } label1は「秒」の1の位、 label2は「秒」の10の位、 pictureBox4は「分」の1の位の画像を表示しています。 pictureBoxとlabelを重ねて、画像の上に時刻を表示しています。 秒が0になったとき(分の位が一つ上がるとき)、 分の位の画像を移動させて(forループ2つ)再び元の位置に戻しているのですが(pictureBox4.Top = 12;) そのとき秒が「00」とはならず「59」のままで、このループが終わると「00」を飛ばして「01」となります。 ちなみにこの部分はタイマーで0.2秒ごとに回しています。 原因がわかりませんので、ご教授願います。 また、ループには概算で0.8秒かかりますが、この間、タイマーの呼び出しは実行されているのでしょうか? 加えて、pictureBox4.Topの値を動かしていますが、重ねて配置しているlabelも一緒に動いてくれます。 いろいろなサイト様を参考に、 this.label3.Parent = this.pictureBox4; と親コントロールをFormから変更したのですが、このためでしょうか? 変な表現がありましたらご容赦ください。 よろしくお願いします。

  • Windowsの時刻表示っておかしくないですか

    Windowsの時刻表示っておかしくないですか。 tt HH:MM:SS で表示すると、 午前11:59分の1分後が午後12:00になるっていうのは、どうにも納得いきません。 午後12:59分の1分後が午後1:00だなんて日本の義務教育じゃ教えないと思うんだけど。 HH:MM:SS 表示では午後1:00 を13:00と表示できるんだし(当たり前だけど)、 正午は、午前12:00か、午後0:00が日本だと思うんです。 この件について、何か書いてあると所ってありませんか。

  • VB2005でのミリ秒の取得について(Mobile)

    お世話になります。 現在、Windows Mobile5.0 向けのアプリケーションを VB2005で作成しています。 アプリケーションの各処理の処理時間を細かく知りたいと思い、 ログに処理時間をミリ秒まで出力しようとしています。 Dim dtNow As DateTime = DateTime.Now outputStr = "[" & dtNow.ToString("yyyy/MM/dd HH:mm:ss") & dtNow.Millisecond.ToString & "]" と記述したのですが、ミリ秒の部分が 0 しか返しません。 普通のWindowsアプリケーションの場合だと上記記述で取得できるのですが、 Mobile5.0/ .NET CF2.0 では異なるのでしょうか? ご存じの方、教えてください。

  • C#で日付の表示を変更する方法

    お世話様です。 C#でプログラムを作っています。(初心者です) 日付の表示の仕方でわからないところがあります。 a.WriteLine ( DateTime.Now.ToString() ) とすると、下記のように表示されます。 2005/03/01 16:31:14  これを下記のように表示するにはどうすれば良いでしょうか? 2005年3月1日 16時31分14秒

  • EXCELで時刻表示の変換

    2015.07.03 18:39:38 というように 文字として得た時刻表示を、excel上で計算に使える yyyy/m/d h:mm:ss に変換する方法を教えてください。 できれば、そのままの形で計算に使えればいいのですが。 実際の用途は、yyyy.m.d h:mm:ss の形で表示されたグリニッジ標準時刻を日本時間に変えたいのです。 よろしくお願いいたします。

  • javaで時刻の判定

    String型のtimeに YYYY-MM-DD HH:MM:SS の形式である時刻が入っているとします. この時刻がYYYY年MM月DD日の20時00分00秒~23時59分59秒内であるかどうかを判定するにはどうしたらよいでしょうか? 文字列のままでは大小比較は困難な気がしますし、GregorianCalendar型もみてみたのですが、いまいち大小比較の仕方がわかりませんでした。 よろしくおねがいします

  • 時刻セルどうしの値の連結について

    例えば、A1とB1にそれぞれhh:mm:ss形式で値が入っています。 それを連結して、A1 & "⇒" & B1 という形でC1セルに入力したいのですが、 これをこのまま実行してしまうと、値が数値に変換されてしまって うまくいきません。 C1に「hh:mm:ss⇒hh:mm:ss」のような形にしたいです。 なにか方法はないでしょうか? よろしくお願いします。

  • 1/10秒単位で経過時間を測りたい

    Excell VBA で 1/10 秒単位で経過時間を表示する方法を教えてください。 現在は次の書式を使っているので、1秒単位でしか表示されません。 MsgBox "所要時間 : " & Format(Now - StartTime, "hh:mm:ss") StartTime は計測開始時刻です。