반응형
1970 년 이후 DateTime을 초 단위로 변환하려면 어떻게해야합니까?
C # DateTime 변수를 Unix 시간, 즉 1970 년 1 월 1 일 이후의 초 수로 변환하려고합니다. DateTime이 실제로 0001 년 1 월 1 일 이후의 '틱'수로 구현 된 것처럼 보입니다.
내 현재 생각은 1970 년 1 월 1 일 내 DateTime에서 다음과 같이 빼는 것입니다.
TimeSpan span= DateTime.Now.Subtract(new DateTime(1970,1,1,0,0,0));
return span.TotalSeconds;
더 좋은 방법이 있습니까?
기본적으로 그렇습니다. 유닉스 시대와의 변환을 위해 사용하는 방법은 다음과 같습니다.
public static DateTime ConvertFromUnixTimestamp(double timestamp)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
return origin.AddSeconds(timestamp);
}
public static double ConvertToUnixTimestamp(DateTime date)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
TimeSpan diff = date.ToUniversalTime() - origin;
return Math.Floor(diff.TotalSeconds);
}
DateTime 대신 DateTimeOffset으로 나머지 시스템이 정상이면 정말 편리한 기능이 있습니다.
long unixSeconds = DateTimeOffset.Now.ToUnixTimeSeconds();
내가 볼 수있는 유일한 방법은 자정 1970년 1월 1일부터해야하는데 있다는 것이다 UTC
TimeSpan span= DateTime.Now.Subtract(new DateTime(1970,1,1,0,0,0, DateTimeKind.Utc));
return span.TotalSeconds;
시간대 문제를 피하기 위해 DateTime.UtcNow를 사용하고 싶을 것입니다.
TimeSpan span= DateTime.UtcNow.Subtract(new DateTime(1970,1,1,0,0,0));
해당 날짜-시간이 UTC로되어 있거나 일광 절약 시간을 준수하지 않은 지역의 현지 시간을 나타내는 경우이 방법이 좋습니다. DateTime 차이 루틴은 일광 절약 시간제를 고려하지 않으므로 결과적으로 6 월 1 일 자정이 1 월 1 일 자정 이후 24 시간의 배수로 간주됩니다. 로케일로 인해 가장 최근의 일광 절약 규칙을 변경하기 전에 시간을 올바르게 처리 할 수있는 좋은 방법이 없다고 생각합니다.
DateTime의 startTime 및 endTime을 작성한 다음 endTime.Subtract (startTime)을 수행 할 수 있습니다. 그런 다음 span.Seconds를 출력하십시오.
나는 그것이 작동해야한다고 생각합니다.
반응형
'developer tip' 카테고리의 다른 글
스핀 락 대 세마포어 (0) | 2020.07.28 |
---|---|
UITextView에서 자동 감지 링크의 색상을 변경할 수 있습니까? (0) | 2020.07.28 |
이 jQuery 클릭 기능이 작동하지 않는 이유는 무엇입니까? (0) | 2020.07.28 |
.exe 파일 이름으로 일부 프로세스 종료 (0) | 2020.07.28 |
iOS 용 동적 라이브러리를 빌드하고 런타임에로드 할 수 있습니까? (0) | 2020.07.28 |