11

私のシステムでは、クライアント モバイル アプリケーションに渡される Ticks に期間を格納しています。そこから、人間が読める形式にティックを変換したいと考えています。私の場合、日、時間、分です。

私のクライアント モバイル アプリケーションは Javascript を使用してコーディングされているため、これを使用して期間を日/時間/分に変換しています。

4

5 に答える 5

10

C# .NET では、1 つのティックは 100 ナノ秒 (1 千万分の 1 秒) を表します。【出典】 .

したがって、ティック数 (最も近い整数に四捨五入) から日数を計算するには、最初に 1000 万を掛けて秒数を計算し、次にそれを 1 日の秒数 (60分は秒、時は 60 分、日は 24 時間)。モジュラス演算子 (%) を使用して、時間と分の期間を構成する剰余値を取得します。

var time = 3669905128; // Time value in ticks
var days = Math.floor(time/(24*60*60*10000000)); // Math.floor() rounds a number downwards to the nearest whole integer, which in this case is the value representing the day
var hours = Math.round((time/(60*60*10000000)) % 24); // Math.round() rounds the number up or down
var mins = Math.round((time/(60*10000000)) % 60);

console.log('days: ' + days);   
console.log('hours: ' + hours);   
console.log('mins: ' + mins);

したがって、上記の例では、ティックの量は 6 分 (切り上げ) に相当します。

別の例を挙げると、2,193,385,800,000,000 ティックの場合、2538 日と 15 時間 23 分になります。

于 2013-03-18T20:29:41.193 に答える
9
var ticks = 635556672000000000; 

//ticks are in nanotime; convert to microtime
var ticksToMicrotime = ticks / 10000;

//ticks are recorded from 1/1/1; get microtime difference from 1/1/1/ to 1/1/1970
var epochMicrotimeDiff = Math.abs(new Date(0, 0, 1).setFullYear(1));

//new date is ticks, converted to microtime, minus difference from epoch microtime
var tickDate = new Date(ticksToMicrotime - epochMicrotimeDiff);

このページによると、setFullYear メソッドは「日付オブジェクトから 1970 年 1 月 1 日の午前 0 時までのミリ秒数を表す数値」を返します。

JavaScript Date オブジェクトのすべてのメソッドについては、このページを参照してください。

于 2016-09-28T19:24:26.497 に答える
4

あなたは2つのことを考慮する必要があります:


.NetのDateTimeの解決ティックは0.1マイクロ秒ですが、Javascriptはミリ秒をカウントします。

オフセット
さらに、.Netは1.1.0000からカウントされ、Javascriptは1.1.1970からカウントされます。

TeaFiles.Netには、Java=Javascriptティックを使用するTimeクラスがあります。これには、scaleプロパティと、.NetからJavascriptに変換する事前定義されたTimescale.Javaスケールがあります。

于 2013-03-18T21:03:13.497 に答える