sourcecode

Date Time의 표현(밀리초 단위)

copyscript 2023. 4. 19. 23:25
반응형

Date Time의 표현(밀리초 단위)

SQL 서버 타임스탬프가 있어 1970년 이후의 시간을 밀리초 단위로 변환해야 합니다.플레인 SQL에서 이 작업을 수행할 수 있습니까?그렇지 않다면, 나는 그것을 추출했다.DateTimeC#의 변수입니다.이것을 밀리섹으로 표현할 수 있을까요?

감사해요.
테자.

UNIX와 같은 타임스탬프(UTC:

yourDateTime.ToUniversalTime().Subtract(
    new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
    ).TotalMilliseconds

UTC에는 서머타임에 관한 문제가 없기 때문에, 서머 타임의 문제도 회피할 수 있습니다.

C#에서는 다음과 같이 쓸 수 있습니다.

(long)(date - new DateTime(1970, 1, 1)).TotalMilliseconds

.NET 4.6 이후로는DateTimeOffsetobject를 지정하여 unix 밀리초를 가져옵니다.컨스트럭터가 있어 이 컨스트럭터는DateTimeobject를 사용하면 아래 예시와 같이 객체를 통과시킬 수 있습니다.

DateTime yourDateTime;
long yourDateTimeMilliseconds = new DateTimeOffset(yourDateTime).ToUnixTimeMilliseconds();

다른 답변에서도 언급되었듯이yourDateTime올바른 것을 가지고 있다Kind지정 또는 사용.ToUniversalTime()UTC 시간으로 변환합니다.

여기서 자세한 내용을 보실 수 있습니다.DateTimeOffset.

있다ToUnixTime()그리고.ToUnixTimeMs()Date Time 메서드확장 클래스

DateTime.UtcNow.ToUnixTimeMs()

SELECT CAST(DATEDIFF(S, '1970-01-01', SYSDATETIME()) AS BIGINT) * 1000

이것이 정확한 것은 아니지만DATEDIFF(MS...오버플로를 일으킵니다.몇 초면 충분하다면 이걸로 충분할 거야

convert datetime을 unixtimestampmillis C#으로 변환하는 다른 솔루션.

private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

public static long GetCurrentUnixTimestampMillis()
{
    DateTime localDateTime, univDateTime;
    localDateTime = DateTime.Now;          
    univDateTime = localDateTime.ToUniversalTime();
    return (long)(univDateTime - UnixEpoch).TotalMilliseconds;
} 

Andoma의 대답을 이용해서, 이것이 내가 하고 있는 것이다.

다음과 같은 구조 또는 클래스를 만들 수 있습니다.

struct Date
    {
        public static double GetTime(DateTime dateTime)
        {
            return dateTime.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
        }

        public static DateTime DateTimeParse(double milliseconds)
        {
            return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(milliseconds).ToLocalTime();
        }

    }

그리고 이 코드를 다음과 같이 사용할 수 있습니다.

DateTime dateTime = DateTime.Now;

double total = Date.GetTime(dateTime);

dateTime = Date.DateTimeParse(total);

이게 도움이 됐으면 좋겠다

언급URL : https://stackoverflow.com/questions/5955883/datetimes-representation-in-milliseconds

반응형