Development Tip

밀리 초 단위의 DateTime 표현?

yourdevel 2020. 11. 12. 20:28
반응형

밀리 초 단위의 DateTime 표현?


1970 년 이후 밀리 초 단위의 시간 표시로 변환해야하는 SQL 서버 타임 스탬프가 있습니다. 일반 SQL로이 작업을 수행 할 수 있습니까? 그렇지 않은 경우 DateTimeC # 변수 로 추출했습니다 . 이것의 millisec 표현을 얻을 수 있습니까?

고마워,
Teja.


아마도 UTC에있는 UNIX와 유사한 타임 스탬프로 변환하려고 할 것입니다.

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부터는 DateTimeOffset객체를 사용 하여 유닉스 밀리 초를 가져올 수 있습니다 . DateTime객체를 받는 생성자가 있으므로 아래와 같이 객체를 전달할 수 있습니다.

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

다른 답변에서 언급했듯이 yourDateTime올바른 Kind지정 있는지 확인 하거나 .ToUniversalTime()먼저 UTC 시간으로 변환하는 데 사용 하십시오 .

여기에서에 대해 자세히 알아볼 수 있습니다 DateTimeOffset.


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

이것은 완전한 정밀도를 제공하지는 않지만 DATEDIFF(MS...오버플로를 유발합니다. 몇 초면 충분하다면 그렇게 할 것입니다.


unixtimestampmillis C #에 대한 은밀한 datetime에 대한이 다른 솔루션입니다.

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 또는 Class를 만들 수 있습니다.

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);

도움이 되었기를 바랍니다.


angular는 dateparater 에 대해 말합니다.

Date 객체, 밀리 초 (문자열 또는 숫자) 또는 다양한 ISO 8601 datetime 문자열 형식 (예 : yyyy-MM-ddTHH : mm : ss.sssZ 및 yyyy-MM-ddTHH : mmZ, yyyy-MM과 같은 더 짧은 버전)으로 형식을 지정할 날짜 -dd 또는 yyyyMMddTHHmmssZ). 문자열 입력에 시간대가 지정되지 않은 경우 시간은 현지 시간대에있는 것으로 간주됩니다.

Andomar의 대답은 datetime을 총 밀리 초로 변환됩니다.

그리고 다음 링크를보아야합니다.

https://docs.angularjs.org/api/ng/filter/date

DateTime 객체가 주어지면 어떻게 ISO 8601 날짜를 문자열 형식으로 얻습니까?

참고 URL : https://stackoverflow.com/questions/5955883/datetimes-representation-in-milliseconds

반응형