C# DateTime.Now의 정밀도 제한 이해
문제:
DateTime.Now
/UtcNow
가 종종 부정확해 보이는 타임스탬프를 반환하고 수 밀리초 간격에 걸쳐 동일한 값을 자주 표시하는 이유는 무엇입니까? DateTime.Now
의 정밀도가 명시적으로 정의되어 있나요?
답변:
DateTime
은 고정밀 시간 측정용이 아닙니다. 핵심 기능은 사용자 인터페이스 및 날짜 기반 계산과 같은 일반적인 애플리케이션에 대한 날짜 및 시간 표현 및 조작입니다.
기술적 세부사항:
정확성과 정확성은 별개입니다. 시계는 정확할 수 있지만(측정 간격이 일관됨) 부정확할 수 있습니다(참조 시간 소스에서 벗어남). 대부분의 시스템은 충분히 정확한 시간 신호에 대한 액세스가 부족하기 때문에 DateTime
에서 마이크로초 정밀도를 제공하는 것은 기만적입니다.
영향:
DateTime.Now
의 본질적인 부정확성으로 인해 고정밀 타이밍이 요구되는 시나리오에는 적합하지 않습니다. 이러한 작업에는 Stopwatch
클래스가 훨씬 우수합니다. DateTime
현재 시간 표시 또는 시차 계산과 같은 일반적인 날짜 및 시간 작업에 적절한 정밀도를 제공합니다.
예시:
이 코드는 시간 측정에서 DateTime.Now
과 Stopwatch
의 차이점을 강조합니다.
<code class="language-csharp">using System; using System.Diagnostics; public class Program { public static void Main(string[] args) { var stopwatch = new Stopwatch(); stopwatch.Start(); for (int i = 0; i < 1000; i++) { Console.WriteLine($"DateTime.Now: {DateTime.Now.Millisecond}, Stopwatch: {stopwatch.ElapsedMilliseconds}"); // Add a small delay (adjust as needed) System.Threading.Thread.Sleep(1); } stopwatch.Stop(); } }</code>
이는 DateTime.Now
이 짧은 기간 동안 동일한 밀리초 값을 반복적으로 출력할 수 있는 반면 Stopwatch
는 보다 세부적인 경과 시간 측정을 제공한다는 것을 보여줍니다.
위 내용은 C# DateTime.Now의 정밀도가 예상보다 낮은 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!