2017-05-31 11 views
0

TicksをTimeSpanに変換したい。TicksをTimeSpanに変換する

私は以下のようにConvertToTimeSpan機能が必要です。

var ticks = 10000; 
TimeSpan ts = ConvertToTimeSpan(ticks); // not working 
Console.WriteLine(ts); // expected output --> {00:00:00.0010000} 

答えて

5

ティックの数を受け入れるTimeSpan(Int64)コンストラクタは、あります:

https://msdn.microsoft.com/en-us/library/zz841zbz(v=vs.110).aspx

はティックの指定された数にのTimeSpan構造体の新しいインスタンスを初期化します。それは暗黙のInt32だから、あなたが終わるアップされますので、間違ったメソッドオーバーロードを使用して、あなたが、var ticks = 1を使用してはならないので、.NET、ティックで

は常に、Int64として表現されています。代わりに、明示的な型宣言または長いリテラル値(var ticks = 1L)を指定します。

+0

:このExampleを見ていると、次のコードで試して作ります彼がこの特定の場合に 'var'を使用したことは問題ではありません。 –

+0

また、変数を 'var ticks = 10000L'として定義すると、コンパイラはその番号をlongとして欲しいと認識させることができます。 – Georg

2

.NET Frameworkに既に存在するTimeSpan.FromTicks(Int64)メソッドが必要です。

この方法では、他の回答で示唆されているように、時間幅のconstructorを使用します。あなたが深く掘りたい場合は、reference source codeでそれを確認することができます。

1

ConvertToTimeSpanメソッド内で何が起こっているのかわからないのですが、これを行うための追加メソッドは必要ありません。TimeSpanクラスのコンストラクタを使用してこの作業を行うことができます。そこつのパラメータを受け入れる唯一のオーバーロードは、ある暗黙のうちにint` `から変換されます` long`を取って、それはdoesnの

var ticks = 1; 
TimeSpan ts = new TimeSpan(ticks); 
Console.WriteLine(ts); 
関連する問題