시간대를 처리하는 것이 @ $$에서 큰 고통입니다. 한 가지 고려해야 할 점은 Windows는 역사적인 규칙이 아닌 현재 DST 규칙 만 저장한다는 것입니다. 따라서 규칙을 사용하여 이전 값을 정확하게 다시 작성할 수 있으면 데이터에 약간의 불일치가있을 수 있습니다. DST 규칙은 항상 변경됩니다. 일부 국가는 규칙을 설정하지 않았으며 매년 날짜를 발표합니다.
데이터에 불일치가 있으면 시간대 정보가 인코딩 된 문자열로 날짜를 저장하는 것이 좋습니다. .Net에서 DateTime.ToString ("O")을 사용할 수 있습니다. 당신은 항상 상관없이 코드가 실행되는 것을 문화 같은 포맷을 취득하지 않게이 형식은 문화 불가지론이다.
var origDt = DateTime.Now;
var dtStr = origDt.ToString("O");
var newDt = DateTime.Parse(dtStr, null, System.Globalization.DateTimeStyles.RoundtripKind);
Console.WriteLine(dtStr);
if (newDt == origDt)
Console.WriteLine("Dates equal"); // should be true
else
Console.WriteLine("Dates not equal");
체크 아웃이 형식 스타일에 대한 자세한 내용은 MSDN documentation.
물론 이것은 비용이 든다. 날짜별로 데이터베이스를 검색하는 것은 비효율적입니다 (수행 할 수 있지만 문자열은 날짜로 변환해야 함). 시간대 차이가 너무 중요하지 않을 가능성이 있습니다. 그것은 당신이 데이터로 무엇을하는지 그리고 정확도가 얼마나 중요한지에 달려 있습니다.
이 경로를 사용하기 전에 프로젝트에 실제로 UTC 및 표준 시간대가 있어야합니다. 로컬 컴퓨터에서 시간을 저장하고 시간대를 무시하는 것이 좋을 것입니다.
분명히 2 개의 필드로 저장하는 것이 좋습니다. - DateTime과 시간대를 별도의 char 필드로 사용하십시오. – Mark
현지 시간을 저장하는 방법을 살펴 보겠습니다. 내 요구가 복잡 해지는 것 같아. 도움과 정보를 제공해 주셔서 감사합니다! –