C# のこのコード行を検討してください
ordernumber.Value = DateTime.Now.Ticks.ToString();
ordernumber.Value
PHPで同じものを取得する方法
$ordernumberValue = microtime(); //?
私はこれを試みます
echo microtime(true) * 10000000;
しかし、取得結果 string.length が違いました。C#より短い。
.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
1 ティックは 1/10000000 秒です。
このコードは、現在のマイクロタイムを「ティック」カウントに変換します。
list($usec, $sec) = explode(" ", microtime());
$ticks = (int)($sec*10000000+$usec*10000000);
これがあなたが探しているものかどうかわかりません:-
$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 ナノ秒を生成することです。