C#에서 타임 스탬프를 만드는 함수
-
23-08-2019 - |
문제
DateTime에서 C#에서 타임 스탬프를 만들 수있는 방법이 궁금합니다. Compact 프레임 워크에서도 작동하는 밀리 초 정밀도 값이 필요합니다 (DateTime.tobinary ()가 CF에는 존재하지 않기 때문에).
내 문제는이 값을 데이터베이스 불가지론적인 방식으로 저장하고 나중에 분류하고 다른 값이 다른 값을 찾을 수 있다는 것입니다.
해결책
나는 항상 다음과 같은 것을 사용합니다.
public static String GetTimestamp(this DateTime value)
{
return value.ToString("yyyyMMddHHmmssfff");
}
문자열이 타임 스탬프의 가장 높은 순서 비트에서 가장 낮은 순서에서 SQL 쿼리의 간단한 문자열 정렬로 문자열이 데이터베이스에서 값을 고착하는 경우 날짜별로 주문할 수 있으므로 200905211035131468과 같은 문자열을 제공합니다.
다른 팁
다음을 사용하여 Unix 스타일 Datestamp를 1 초에 정확하게 만들 수 있다고 생각합니다.
//Find unix timestamp (seconds since 01/01/1970)
long ticks = DateTime.UtcNow.Ticks - DateTime.Parse("01/01/1970 00:00:00").Ticks;
ticks /= 10000000; //Convert windows ticks to seconds
timestamp = ticks.ToString();
분모를 조정하면 정밀도 레벨을 선택할 수 있습니다.
길고 보편적 인 저장 가능한 DateTime.ticks 속성을 사용할 수 있으며 컴팩트 프레임 워크에서도 항상 증가하고 사용할 수 있습니다. 9999 년 12 월 31 일 이후에 코드가 사용되지 않도록하십시오.)
당신은 또한 사용할 수 있습니다
STOPWATCH.GETTIMESTAMP (). TOSTRING ();
실제 실제 시간에 해당하지만 고유 한 응용 프로그램 인스턴스의 경우 다음 코드를 사용할 수있는 타임 스탬프를 원한다면 다음 코드를 사용할 수 있습니다.
public class HiResDateTime
{
private static long lastTimeStamp = DateTime.UtcNow.Ticks;
public static long UtcNowTicks
{
get
{
long orig, newval;
do
{
orig = lastTimeStamp;
long now = DateTime.UtcNow.Ticks;
newval = Math.Max(now, orig + 1);
} while (Interlocked.CompareExchange
(ref lastTimeStamp, newval, orig) != orig);
return newval;
}
}
}
몇 초 만에 필요할 때 :
var timestamp = (int)(DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1)).TotalSeconds;
제휴하지 않습니다 StackOverflow