5

C# のこのコード行を検討してください

ordernumber.Value = DateTime.Now.Ticks.ToString();

ordernumber.ValuePHPで同じものを取得する方法

$ordernumberValue = microtime(); //?

私はこれを試みます

echo microtime(true) * 10000000;

しかし、取得結果 string.length が違いました。C#より短い。

4

3 に答える 3

5

.NET ドキュメントから:

DateTime.Ticks プロパティ

このプロパティの値は、0001 年 1 月 1 日の深夜 12:00:00 (グレゴリオ暦では 0001 年 1 月 1 日の 0:00:00 UTC) から経過した 100 ナノ秒間隔の数を表し、DateTime を表します.MinValue. うるう秒に起因するティック数は含まれません。

PHP では、これは単純にtime()として実装されます。

時間

Unix エポック (1970 年 1 月 1 日 00:00:00 GMT) からの秒数で測定された現在の時刻を返します。

microtime()同様に、小数点以下の秒数とマイクロ秒数で時間を返すため、精度が高くなります。いくつかの古風な理由から、デフォルト値は文字列ですがtrue、最初の引数として渡すと、素敵な浮動小数点数が得られます:

rr-@burza:~$ php -r 'echo microtime(true);'
1434193280.3929%    

したがって、必要なのは、返された値をスケーリングするか、time()またはmicrotime()一定の係数でスケーリングすることだけです。

ウィキペディアによると、1 ナノ秒は 1000 ピコ秒または 1/1000 マイクロ秒、または 1/1000000000 秒に相当します。したがって、100 ナノ秒は 100/1000000000 マイクロ秒を意味します。つまり、1 .NET ティック = 1/10000000 秒、つまり 1 秒 = 10000000 .NET ティックです。time()したがって、次のように、返された値にmicrotime()10000000を掛ける必要があります。

microtime(true) * 10000000
于 2015-06-13T10:55:48.690 に答える
1

1 ティックは 1/10000000 秒です。

このコードは、現在のマイクロタイムを「ティック」カウントに変換します。

list($usec, $sec) = explode(" ", microtime());
$ticks = (int)($sec*10000000+$usec*10000000);
于 2015-06-13T11:15:04.343 に答える
1

これがあなたが探しているものかどうかわかりません:-

$mt = microtime(true);

$mt =  $mt*1000; //microsecs
$ticks = (string)$mt*10; //100 Nanosecs
echo $ticks; //14341946614384

ここでの主な違いは、0001 年 1 月 1 日の真夜中の 12:00:00 から Ticks が 100 ナノ秒であるのに対し、これは 1970 年 1 月 1 日から 100 ナノ秒を生成することです。

于 2015-06-13T11:08:04.623 に答える