[C#] C #을 사용하여 밀리 초 단위로 시간 가져 오기

밀리 초 단위로 시간을 가져야하는 프로그램을 만들고 있습니다. 시간이 지남에 따라, 나는 결코 자신과 같지 않은 숫자를 의미하며, 항상 2 초 전보다 1000 숫자가 더 큽니다. 나는 DateTime.Nowa 로 변환 TimeSpan하고 TotalMilliseconds그로부터 얻는 것을 시도했지만 … 완전히 정확하지 않다고 들었습니다.

더 쉬운 방법이 있습니까?



답변

Stopwatch수업을 사용하십시오 .

경과 시간을 정확하게 측정하는 데 사용할 수있는 일련의 방법 및 속성을 제공합니다.

그것을 구현하는 좋은 정보가 있습니다 :

성능 테스트 : System.Diagnostics.Stopwatch를 사용한 정확한 런타임 측정


답변

long milliseconds = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;

이것은 실제로 다양한 유닉스 변환 방법이 DateTimeOffset클래스 (.NET Framework 4.6+, .NET Standard 1.3+) 에서 구현되는 방법입니다 .

long milliseconds = DateTimeOffset.Now.ToUnixTimeMilliseconds();


답변

DateTime.Ticks속성은 날짜와 시간을 나타내는 눈금 수를 가져옵니다.

10,000 Ticks는 밀리 초 (초당 10,000,000 틱)입니다.


답변

나는 다음 수업을 사용합니다. 나는 인터넷에서 그것을 한 번 발견했는데, 지금 은 최고의 NOW () 이라고 가정했다 .

/// <summary>Class to get current timestamp with enough precision</summary>
static class CurrentMillis
{
    private static readonly DateTime Jan1St1970 = new DateTime (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    /// <summary>Get extra long current timestamp</summary>
    public static long Millis { get { return (long)((DateTime.UtcNow - Jan1St1970).TotalMilliseconds); } }
}

출처를 알 수 없습니다.


답변

QueryPerformanceCounter기본 방법을 시도해 볼 수 있습니다 . 자세한 내용은 http://www.pinvoke.net/default.aspx/kernel32/QueryPerformanceCounter.html 을 참조하십시오. 이것이 Stopwatch클래스가 사용하는 것입니다.

.NET / C #에서 틱 정밀도의 타임 스탬프를 얻는 방법을 참조하십시오 . 자세한 내용은.

Stopwatch.GetTimestamp() 이 방법에 대한 액세스를 제공합니다.

public static long GetTimestamp() {
     if(IsHighResolution) {
         long timestamp = 0;
         SafeNativeMethods.QueryPerformanceCounter(out timestamp);
         return timestamp;
     }
     else {
         return DateTime.UtcNow.Ticks;
     }
 }


답변

DateTime.Now.TimeOfDay.TotalMilliseconds (현재 날짜)를 사용했는데 도움이되기를 바랍니다.


답변

사용하십시오 System.DateTime.Now.ToUniversalTime(). 이렇게하면 판독 값이 알려진 기준 기반 밀리 초 형식으로 변경되어 일 변경 등을 완전히 제거 할 수 있습니다.