C# で現在の時間をミリ秒単位で取得する

Abdul Mateen 2023年10月12日
  1. プログラミングの日付と時刻
  2. C# のミリ秒
  3. C# でのミリ秒を使用したコーディング例
C# で現在の時間をミリ秒単位で取得する

この記事では、現在の時刻をミリ秒単位で取得する方法を学習します。 システムの日付と時刻を含め、プログラミングにおける日付と時刻について説明します。

次に、ミリ秒を取得する方法について説明します。 最後に、ミリ秒を使用したプログラミング例について説明します。

プログラミングの日付と時刻

日付と時刻は、多くのエンティティの一部である可能性があります。 多くのトランザクションでは、現在の日付と時刻が必要です。

たとえば、販売、購入、加入、返却、発行などです。多くのプログラムでは、日付と時刻の比較と計算が必要です。

シニア メンバーの検索、発行から返却までの日数、注文から配送などのアクティビティまでの時間、レースのスタートからクロス ラインまでの時間、タイピング速度の検出など、多くの例を指定できます。

すべてのコンピューターにはシステム クロックがあり、コンピューターの電源を切ってもアクティブなままです。 ほとんどすべてのプログラミング言語には、システムのデータと時刻にアクセスするための何らかの方法が用意されています。

現在、世界中の多くのサーバーが、コードを使用して日付と時刻を取得するための API を提供しています。

ほとんどの高度なプログラミング言語は、日付と時刻の両方を持つ単一のオブジェクトを提供します。 通常、それは現在と呼ばれます。 同様に、C# は、システム データと時間にアクセスするさまざまな方法を提供します。

例を参照してください。

using System;
class Test {
  static void Main() {
    DateTime date_time = DateTime.Now;
    Console.WriteLine("Welcome, the current date and time is: " +
                      date_time.ToString("MM/dd/yyyy HH:mm:ss"));
  }
}

出力:

Welcome, the current date and time is: 11/05/2022 07:49:27

日付と時刻についてのアイデアを得て、次に C# でミリ秒を取得する方法について説明します。

C# のミリ秒

C# では、System namespaceDateTime 構造があり、時刻の瞬間、つまり、ほとんどが 1 日の日付と時刻を提供します。 コンストラクターを使用すると、日時値を割り当てるか、文字列表現から解析して、オブジェクトを初期化できます。

時間をミリ秒単位で表すにはさまざまな方法があります。 それらのいくつかについて説明します。

ミリ秒 プロパティの使用

DateTime 構造体は Millisecond プロパティを提供します。これにより、特定の日付のミリ秒のコンポーネントを取得できます。 例えば:

using System;
class Test {
  static void Main() {
    DateTime date_time = DateTime.Now;
    int ms = date_time.Millisecond;
    Console.WriteLine("The current time is:" + date_time.ToString());
    Console.WriteLine("The current time in milliseconds is: " + ms.ToString());
  }
}

上記の例では、date_time オブジェクトが現在の日時、つまり now で初期化され、millisecond のプロパティで使用されていることがわかります。 このプロパティは、現在のミリ秒単位の整数値を返します。

出力:

The current time is:11/05/2022 04:17:00
The current time in milliseconds is: 736

デモンストレーションのために、現在の日付と時刻を持つオブジェクトを作成しました。 date_time オブジェクトからミリ秒を抽出する別の方法を次に示します。

ここで、最初のパラメーターは年、2 番目のパラメーターは月、3 番目のパラメーターは日です。

同様に、4 番目のパラメーターは時間、5 番目は分、6 番目は秒、最後のパラメーターはミリ秒です。

DateTime date_time = new DateTime(2022, 11, 4, 9, 20, 30, 120);
Console.WriteLine("Milliseconds: {0:fff}", date_time);

コードの 2 行目では、date_time 値からミリ秒を取得するフォーマット指定子を指定しています。 書式指定子の詳細については、こちら をクリックしてください。

出力:

Milliseconds: 120

日時解析の使用

同じクラスの静的メソッド Parse を呼び出すことで、日時の文字列表現を DateTime オブジェクトに変換できます。 DateTimeOffset の静的な Parse メソッドを呼び出して、日時の値を取得することもできます。

次に、書式指定子 (既に説明した) を使用してミリ秒を取得します。 コードを参照してください:

using System;
class Test {
  static void Main() {
    string date_time_string = "10/23/2022 9:22:50.125 AM";
    DateTime date_time = DateTime.Parse(date_time_string);
    DateTimeOffset date_value = DateTimeOffset.Parse(date_time_string);
    Console.WriteLine("Time in Milliseconds: {0}", date_time.ToString("fff"));
    Console.WriteLine("\nTime in Milliseconds: {0}", date_value.ToString("fff"));
  }
}

上記のコードでは、解析メソッドで日時の文字列表現を使用していることがわかります。これにより、対応する日時に自動的に変換されます。

出力:

Time in Milliseconds: 125
Time in Milliseconds: 125

Unix 時間方式の使用

時間をミリ秒単位で取得する最も便利な方法は、Unix タイムスタンプを使用することです。 このタイムスタンプは、1970 年 1 月の 00:00:00 UTC (協定世界時) から経過した数秒を返します (閏秒を除く)。

C# の ToUnixTimeMilliseconds メソッドは、ミリ秒単位の時間を取得するために使用されます。 例えば:

DateTimeOffset date = DateTimeOffset.UtcNow;
long milliseconds = date.ToUnixTimeMilliseconds();
Console.WriteLine(milliseconds);

出力:

1667624911885

13 分数秒後に同じコードを実行し、値を取得しました。

1667625703243

違いは791358です。 これを 1000 ミリ秒 で割ると、791.358 秒になります。 さらに、60 秒で割ると、13.1893 分になります。

このメソッドが定数値を返さないことを示したいと思います。 代わりに、1970 年 1 月からの経過秒数を返します。

第二に、この方法を使用すると、値の差を使用して、いくつかの期間のミリ秒を測定できます。

カスタムミリ秒のタイムスタンプ

C# の Ticks プロパティを使用して時間を測定することもできます。 ティックの値の範囲は、minValuemaxValue の間です。

次の例は、ティックを使用してミリ秒単位の時間を取得する方法を示しています。

long timeInMilliseconds = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
Console.WriteLine(timeInMilliseconds);

出力:

63803225681236

Stopwatch クラスの使用

C# の Stopwatch クラスは、プログラム内のタスクの頻度を測定するために使用されます。 経過時間を測定し、コードの最適化に役立ちます。

Stopwatch クラスを使用すると、時間をミリ秒単位で計算できます。 例えば:

using System;
using System.Threading;
using System.Diagnostics;
class Test {
  static void Main() {
    Stopwatch st = new Stopwatch();
    st.Start();
    Thread.Sleep(1000);
    st.Stop();
    Console.WriteLine("Time elapsed in Milliseconds: {0}", st.ElapsedMilliseconds);
  }
}

ここでは、System.DiagnosticsStopwatch クラスを使用します。 デモンストレーションのために、ストップウォッチを開始し、1 秒後に停止する必要があります。

その間に、必要なタスクを実行できます。 ここでは、意図的に System.Threading から Thread クラスの Sleep メソッドを呼び出しています。

Sleep 関数は、start/stop メソッドの間に時間を作成します。 最後に、開始から停止までの経過時間を表すプロパティ ElapsedMilliseconds を出力します。

出力:

Time elapsed in Milliseconds: 1000

出力は、Sleep メソッドにかかった時間を示しています。 Sleep メソッドの時間を増やすことで、これを再確認できます。 次に、ミリ秒を使用したコーディング例について説明します。

C# でのミリ秒を使用したコーディング例

プログラムでミリ秒を使用したコーディング例がいくつかあります。

例 1

まず、ユーザーが入力している時間を計算する例があります。 ここにコードがあります:

using System;
using System.Threading;
using System.Diagnostics;
class Test {
  static void Main() {
    Stopwatch st = new Stopwatch();
    Console.WriteLine("Start typing without using enter key");
    st.Start();
    Console.ReadLine();
    st.Stop();
    Console.WriteLine("You have typed for {0}", st.ElapsedMilliseconds / 1000 + " seconds");
  }
}

このコードは、start メソッドと stop メソッドの間でユーザーからの入力を受け取ります。 一般に、ユーザー入力をいくつかの変数で取得しますが、stopwatchstart 関数と stop 関数の間で時間を経過させようとしているだけです。

最後の行では、経過したミリ秒を 1000 で割って秒数を計算します。 このコードの 1つの実行例は次のとおりです。

Start typing without using enter key
I am just typing and typing and typing
You have typed for 15 seconds

この出力の最初の行は、ユーザーへのメッセージです。 2 行目では、Enter キーが押される前にユーザーが何らかのテキストを入力しており、出力の最後の行には経過時間が秒単位で示されています。

例 2

この例では、配列をソートする時間を計算しています。 10000000 の配列サイズを宣言し、sort 関数を呼び出して配列をソートしました。

using System;
using System.Threading;
using System.Diagnostics;
class Array_Sort {
  public static void Main() {
    Random rn = new Random();
    int[] arr = new int[10000000];
    for (int i = 0; i < 1000000; i++) arr[i] = rn.Next(0, 50000);
    Stopwatch st = new Stopwatch();
    st.Start();
    Array.Sort(arr);
    st.Stop();
    Console.WriteLine("Sorting time: {0}", st.ElapsedMilliseconds + " milliseconds");
  }
}

ここでは、配列をランダムに初期化しました。 ライブラリ関数 sort を呼び出して配列をソートします。

関数呼び出しは、start 関数と stop 関数の間にあります。

最後の行には、開始から停止までの時間 (ソート時間) がミリ秒単位で出力されます。

出力:

Sorting time: 2227 milliseconds

例 3

3 番目の例は、注文処理時間を追跡する際のミリ秒の使用を示しています。 実際には、これを行うための正式な方法があります。 ただし、注文品が顧客に配達されるときにスーパーバイザーがキーを入力します。

ここでは、発注と配達時間の差を計算しています。

using System;
class Order_Track {
  public static void Main() {
    DateTimeOffset date = DateTimeOffset.UtcNow;
    DateTime date_time1 = DateTime.Now;
    long order_placed_time = date_time1.Millisecond;
    Console.WriteLine("Press Yes, when order is delivered");
    Console.ReadLine();
    DateTime date_time2 = DateTime.Now;
    long order_deliver_time = date_time2.Millisecond;
    long difference = order_deliver_time - order_placed_time;
    Console.WriteLine("Order process time:" + difference + " milliseconds");
  }
}

3 行目では、システム時間を取得し、それを変数 order_placed_time に格納しています。

次に、注文品の配達時に監督者または管轄当局にキーを入力するようメッセージがあります。 入力後、システム時刻を再取得しました。

前の行では、今回は印刷しています。 最後に、最後から 2 番目の行で、両方の時間の差を計算します。

出力:

Press Yes, when order is delivered
Order process time:536 milliseconds

この記事では、日付と時刻を包括的に見ました。 C# でミリ秒を取得する複数の方法について説明しました。

最後に、ミリ秒の適用例をいくつか見てきました。

関連記事 - Csharp DateTime