DateTime.Now vs DateTime.UtcNow.ToLocalTime

링크된 글에서 설명했다시피, UTC는, 속도 측면 보다는, 복수의 타임 존 컨텍스트에서 올바른 시간 비교를 위한 것입니다.

속도가 빠르다는 이유로, DateTime.UtcNow.ToLocalTime()을 호출하면, 이는 DateTime.Now와 같아, 타임 존 사이에 시간 비교가 안됩니다.

예를 들면, 아침 10시에 DateTime.Now 값을 저장한다고 할 때, 서울 검사기가 저장한 값과 미국 동부에 있는 검사기가 저장한 값은 같습니다.

그러나, 두 검사기의 시간대가 다르기에 저장된 결과의 직접 비교는 올바른 결과를 나타내지 않습니다.

링크된 문서에서는 utc와 로컬 타임이 선택의 문제인 듯한 뉘앙스가 있지만, 일반적으로, DB에 저장할 시간은 UTC time으로 하는 게 권고 사항입니다.
(Display 나 연산을 위해서, 로컬 타임으로 변환합니다.)

물론 DB에 이미 로컬 타임으로 저장했으면 이를 손대면 안되겠죠.

1개의 좋아요