2012-03-15 3 views
0

내가 (변수 fileDate입니다) 문자열을했습니다를 비교하는 UTC 기반 타이밍 값으로 사항 날짜 변환하는 방법 :다음과 같은 형식으로 날짜 값 timings- C#

2011년 2월 12일 오전 11시 58분

지금 난 항상에 (비교지고) 모든 문자열을 변환 할 * 날짜로이 변환 한 후 내가 다른 컴퓨터의 날짜를 비교하는 문제를했습니다 같은 기준으로 UTC 시간에하고 싶은, 그래서 Utc_date 값 *

아래 코드를 시도했지만 위의 문자열을 Datetime 기반으로 변환 할 수 없어 (초가 없어) 작동하지 않았습니다.

DateTime date = Convert.ToDateTime(fileDate); 
date = DateTime.SpecifyKind(date, DateTimeKind.Utc); 
fileDate = date.ToString("MM/dd/yyyy hh:mm tt"); 

위의 경우 FormatException이 표시되지 않습니다. 도움을받을 수 있습니까?

답변

2
를 얻기 위해 당신이 적절한 날짜 시간 인스턴스에 값을 얻을 수 DateTime.ParseExact를 사용되어야하며, 다음 .ToUniversalTime()을 사용할 수 있습니다

시작하려면 DateTime.ParseExact 또는 TryParseExact을 사용하는 것이 좋습니다. 샘플이 12 월 2 일 또는 2 월 12 일인 지 여부는 확실하지 않습니다. 형식을 지정하면 FormatException이 삭제 될 수 있습니다.

다음 문제는 당신이 변환하고자하는 시간대 일하고있다 - 당신이 11시 58분 일부 시간대에 지역 시간이라고 말하는, 또는 이미 UTC의 시간 있어?

  • 실행중인 코드의 현지 시간대 인 경우 DateTimeStyles.AssumeLocal | DateTimeStyles.AdjustToUniversal을 사용하여 구문 분석의 일부로이를 수행 할 수 있습니다.
  • 이미 보편적 인 시간 인 경우 DateTimeStyles.AssumeUniversal
  • 다른 시간대의 현지 시간 인 경우 TimeZoneInfo을 사용해야 변환이 수행됩니다.

    • 로컬 시간 을 할 수있다 : 그것은 현지 시간 인 경우

    또한, 당신은 (당신이 일광 절약 시간을 준수 시간대를 사용하는 가정)이 코너의 경우를 생각해야합니다 시계가 앞으로 갈 때 DST 전환으로 인해을 건너 뜁니다. 따라서 시계가 오전 1시에서 2 시로 건너 뛰면 오전 1시 30 분은 전혀 존재하지 않습니다.

  • 시계가 돌아갈 때 DST 전환으로 인해 현지 시간이 인 경우 희미합니다. 일 수 있습니다. 따라서 시계가 오전 2시에서 오전 1 시까 지 돌아 오면 오전 1시 30 분에 번 두 번 번 UTC 시간에 두 번 발생합니다. 어떤 항목에 관심이 있습니까?

이러한 사례를 처리 할 방법을 결정하고 단위 테스트에서 다루고 있는지 확인해야합니다.

다른 옵션은 "로컬 날짜/시간"과 "특정 시간대의 날짜/시간"(및 기타)의 개념을보다 명확하게 구분하는 날짜 및 시간 라이브러리 Noda Time을 사용하는 것입니다.

+0

안녕 존, 예. 일광 절약 시간제로이 문제에 직면하고 있습니다. 기본적으로 비교 된 값을 UTC 시간으로 변환했지만 여전히 일광 절약 시간 문제가 있습니다. 어떻게 나를 막는가? 자세한 답변을 보내 주셔서 감사합니다. –

+0

@stack_pointerisEXTINCT : 충분한 정보를 제공하지 않아서 문제가 무엇인지 알기가 어렵습니다. 나는 여러 가지 질문을했으며, 아직 답을주지 않았다. 문제를 보여주는 짧지 만 완전한 예제 프로그램이 도움이 될 것입니다. –

+1

Jon, 추가 정보로 질문을 업데이트했습니다. –

0

UTC 시간 (이 당신의 서버 시스템에서와 같이 시간의 차이에 대한 것)

관련 문제