2017-01-25 1 views
0

멕시코 날짜와 시간을 UTC 날짜와 시간으로 변환하는 데 사용한 코드를 참조하십시오.C# 어떻게 UTC 날짜 시간을 멕시코 날짜로 변환 하시겠습니까?

string strDateTime = "25/01/2017 07:31:00 AM"; 
    DateTime localDateTime = DateTime.Parse(strDateTime); 
    DateTime univDateTime = localDateTime.ToUniversalTime(); 

ToUniversalTime

다시 내가 멕시코 현지 시간으로 같은 UTC 날짜와 시간 UTC 25-01-2017 02:01:00 그때 내가 너무 좋아하지 않은 07:31:00 AM becomes 06:01:00를 참조

24-01-2017 06:01:00있어 변환하려고 반환 UTC 25-01-2017 02:01:00. 그래서 내 코드에서 누락 된 부분이 무엇인지에 대해 알려주십시오. 시간대 정보를 사용하여 utc에서 멕시코 시간으로 변환 할 때 현지 시간이 잘못 표시됩니다.

시간대 정보를 사용하여 utc에서 멕시코로 현지 시간으로 변환하는 코드를 참조하십시오. .. 아마 뭔가 당신이 하나의 TimeZoneInfo.ConvertTime() API를 활용하려는거야

: 일을 조금 변경 -

string strDateTime = "25-01-2017 02:01:00"; 
    DateTime utcDateTime = DateTime.Parse(strDateTime); 
    string nzTimeZoneKey = "Pacific Standard Time (Mexico)"; 
    TimeZoneInfo nzTimeZone = TimeZoneInfo.FindSystemTimeZoneById(nzTimeZoneKey); 
    DateTime nzDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, nzTimeZone); 
+0

당신이'TimeZoneInfo.Local'를 입력 할 때 당신은 무엇을 얻을 및 결과를 확인 할 수 있나요? –

+0

"태평양 표준시 (멕시코)"는 바하 캘리포니아 반도의 북부 지역을위한 것입니다. 도시에는 티후아나 (Tijuana)와 멕시 칼리 (Mexicali)가 있으며, 스페인어로 "조나 노로 에스테 (Zona Noroeste)"라고 불립니다. 멕시코의 "Zona Pacifico"가 아닙니다. [멕시코에서 위키 피 디아의 시간 문서] (https://en.wikipedia.org/wiki/Time_in_Mexico)를 참조하십시오. 멕시코에는 네 개의 시간대가 있으므로 올바른 시간대를 선택하십시오. –

+0

또한 Windows 시간대 ID "태평양 표준시 (멕시코)"와 "태평양 표준시"간의 논리적 차이가 없습니다. 멕시코의 일부 지역은 멕시코의 DST 전환 날짜 (미국 이전 날짜 대신)를 사용했으나 실제로는 사실이 아니며 데이터가 수정되었다고 생각되었습니다. 해당 전체 영역은 미국 DST 전환과 정렬됩니다 (멕시코는 제외). –

답변

2

좋아, 난 당신이 인도에있는되었다는 것을 몰랐다 같은 :

var dt = new DateTime(2017, 01, 25, 7, 31, 0).ToUniversalTime(); 
    var nzTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time (Mexico)"); 
    //var ist = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); 
    DateTime nzDateTime = TimeZoneInfo.ConvertTime(dt, TimeZoneInfo.Utc, nzTimeZone); 
+0

내 날짜 형식이 잘못되면 어떻게 datetime 구문을 분석 할 수 있습니까? – Mou

+0

코드가 성공적으로 실행 되었으면 구문 분석이 제대로되었지만 기대했던 방식대로 수행되지 않습니다. [MSDN] (https://msdn.microsoft.com/en-us/library/az4se3k1 (v = vs.110) .aspx)에서 날짜 형식을 확인하십시오. 날짜의 문자열 형식도 표시되지 않습니다. –

+0

코드를 실행하려고하는데 여전히 '07 : 31 : 00'대신 '06 : 01 : 00'이라는 잘못된 시간이 표시됩니다. u가 VS2013 IDE 디버깅 화면의 스크린 샷을 업로드 할 수있는 경우 – Mou

2

당신은 현재 시간대 (UTC+05:30)(UTC-8:00)로 변환하는 시간대 다릅니다. 그래서 당신은 차이를 얻습니다. 원래 표준 시간대에서 대상 시간대까지 약 13 시간 30 분이 소요됩니다. 5:30 - (-8) = 13:30.

원래 날짜에서 13 시간 30 분을 뺀 다음 18:01:00이되며 12 시간 형식은 전날 6PM이됩니다.

편집 :

대신 하드 코딩 멕시코 시간대를, 당신은 그들이 어디에서 오는지에 상관없이 사용자의 시간대를 결정할 수있는 방법이 있어야합니다. 이는 this answer에 설명 된대로 JavaScript를 사용하는 것이 가장 좋습니다.

+0

프로그래밍 방식으로 수행하는 방법. 그것을 달성하기위한 코드를 게시하시기 바랍니다. 덕분에 – Mou

+0

하드 코드''13 시간 30 분 감축 ''을하고 싶지 않습니다. UTC 날짜와 시간을 시간대 정보를 제공하는 클라이언트 로컬 시간으로 변환하고 싶습니다. – Mou

+1

여기에는 하드 코딩이 없습니다. 그건 당신의 현지 시간에 맞는 정확한 클라이언트 현지 시간입니다, 당신이 아침에있을 때, 그들은 밤에, 이것에 아무런 문제가 없습니다. 그래서 코드는 괜찮습니다. 진짜 질문은 무엇을 성취하려고 하는가하는 것입니다. 내 웹 응용 프로그램 사용자의 –

1

문제는 Parse가 발생하는 시간대를 지정하지 않고 수행된다는 것입니다. 따라서 시스템은 사용자 컴퓨터의 기본값을 사용합니다. 컴퓨터가 PST가 아닌 것 같습니다. 인도의 어딘가.

따라서 DateTime 개체로 변환 한 후에는 PST 표준 시간대를 지정하여 UTC로 변환해야합니다. 이렇게하려면 몇 가지 방법이 있습니다.

  1. 문자열의 일부로 시간대 오프셋을 지정하십시오.
  2. 를 호출 TimeZoneInfo.ConvertTimeToUtc 중 하나를 지정 timezoneid

아마 당신이 원하는 모든 ConvertTime 또는 ConvertTimeByTimeZoneId를 호출하여 두 시간대 사이의 변환합니다.https://msdn.microsoft.com/en-us/library/bb382058(v=vs.110).aspx 예를 들어


    string pst = "Pacific Standard Time"; 
    TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currentTime, TimeZoneInfo.Local.Id, pst)); 

https://msdn.microsoft.com/en-us/library/bb382770(v=vs.110).aspx

    • : -하지 2시 반 태평양 표준시 오전 7시 반 1:30 UTC해야한다. 그래서 이것은 초기 전환에 문제가 있음을 나타냅니다. 오전 2시 (태평양 표준시 기준)는 실제로 오후 6시입니다. 또한 귀하의 의견이 7시 31 분이었고 2시 1 분 출력이라고 주장했습니다 - 멕시코는 30 분의 시간대를합니까? 나는 인도가 알고있다.

      나는 Google에서 문자 그대로 "2:01 UTC to PST"로 검색하여 전환을 테스트하고 비교를 위해 답변을 반환합니다.

      구문 분석을위한 입력 시간대를 선언하는 다른 게시물을 참조하십시오. 그리고 명시된 바와 같이 DST로 변환 할 필요가 없습니다. TimeZoneInfo 중 대한 MSDN에 Does ConvertTimeFromUtc() and ToUniversalTime() handle DST?

      상세 정보 : https://msdn.microsoft.com/en-us/library/bb495915(v=vs.110).aspx

  • +0

    내 코드 예제를 수정하는 데 나에게 명확하지 않은 내용이 여기에 있습니다. 게시 된 코드를보고 수정 한 후에 여기에 게시하면 도움이 될 것입니다. 기본적으로 나는 utc 날짜와 시간을 멕시코 날짜와 시간으로 변환하려고합니다. – Mou

    관련 문제