나는 타임 스탬프가 Windows 모바일 프로젝트에 기록되도록하고 싶습니다. 정확도는 적어도 100 밀리 초 범위 내에 있어야합니다..NET Compact Framework에서 DateTime.Now의 밀리 초는 항상 0입니까?
그러나 DateTime.Now
으로 전화하면 Millisecond
속성이 0으로 설정된 DateTime
개체가 반환됩니다. 또한 Ticks
속성은 그에 따라 반올림됩니다.
시간 정확도를 높이려면 어떻게해야합니까?
내 코드는 Compact Framework 버전 3.5에서 실행됩니다. HTC 터치 프로 2 장치를 사용합니다. 내가이 문제를 해결 다음 클래스를 생성 한 MusiGenesis에서 답변에 따라
:
/// <summary>
/// A more precisely implementation of some DateTime properties on mobile devices.
/// </summary>
/// <devdoc>Tested on a HTC Touch Pro2.</devdoc>
public static class DateTimePrecisely
{
/// <summary>
/// Remembers the start time when this model was created.
/// </summary>
private static DateTime _start = DateTime.Now;
/// <summary>
/// Remembers the system uptime ticks when this model was created. This
/// serves as a more precise time provider as DateTime.Now can do.
/// </summary>
private static int _startTick = Environment.TickCount;
/// <summary>
/// Gets a DateTime object that is set exactly to the current date and time on this computer, expressed as the local time.
/// </summary>
/// <returns></returns>
public static DateTime Now
{
get
{
return _start.AddMilliseconds(Environment.TickCount - _startTick);
}
}
}
"[SOLVED]"로 질문의 제목을 다시 지정할 필요가 없습니다. 첫 페이지의 노란색 응답 카운터 또는 검색 결과를 통해 질문에 대답 할 수 있음을 알 수 있습니다. – spoulson
이 소스는이 클래스가 일반 "DateTime.Now"에 의해 반환 된 값에서 거의 "벗어나", 아마도 몇 초 (또는 훨씬 더)까지 하루.클래스의 _start 속성을 설정하거나, 일정 시간 (하루 또는 그 이상)을 기다리고 'DateTime.Now'와'DateTimePrecisely.Now'를 비교하여이를 간단하게 테스트 할 수 있습니다. – MusiGenesis
만약 드리프트 값을 받아 들일 수 없다면,'_start'와'_startTick'에 대한 새로운 값을 얻는'Reset' 메쏘드를 추가하고 주기적으로 호출 할 수 있습니다. 이렇게하면 시스템 시계와 장기간 동기화되며 밀리 초 해상도를 유지할 수 있습니다. 또는'ctacke'의 코드를 사용하십시오. – MusiGenesis