2017-01-20 2 views
-1

문자열이 DateTime이고 어떤 timeZone 형식인지는 알지만 해당 문자열의 timeZone 정보는 없습니다.DateTime 문자열을 특정 시간대로 변환하십시오. C#

예 :

2017-01-19 23:53:57 지금이 문자열이 다른 시간대로입니다 서버에서 변환됩니다 내가 서버의 시간대를 변경할 수 없습니다.

DateTime.Parse("2017-01-19 23:53:57")을 사용하면 서버 시스템의 timeZone 구성이 DateTime이됩니다.

이것은 내 웹 응용 프로그램이며 서버는 다른 시간대에있을 수 있습니다.

방글라데시 시간을 UTC로 변환하고 싶지 않습니다. 방글라데시 표준 시간대 형식 인 DateTime 문자열을 방글라데시 표준 시간대 형식 인 DateTime 개체로 변환하고 싶습니다.

+1

희망 [시간대 사이에 시간을 변환] 당신이 알고 있다면 (https://msdn.microsoft.com/en-us/library/bb397769 (V = vs.110)에서 .aspx) 당신에게 –

+0

도움이 될 당신의'DateTime'은 여러 로케일에서 사용되기 때문에 가능할 때마다'DateTime.UtcNow'를 사용해야하고 필요시 최종 사용자의 컴퓨터에서만 현지 시간으로 변환해야합니다. – Abion47

+1

더 나은 아직 DateTimeInfo를 사용하여 오프셋간에 변환하지 않아도됩니다. –

답변

-2

아래의 방법을 통해 2017-01-19 23:53:57 형식 문자열을 datetime으로 변환 할 수 있습니다.

DateTime DateConverter(string date) 
    { 
     string[] dateAndTimes= date.Split(' '); 
     string[] dateParts = dateAndTimes[0].Split('-'); 
     string convertableString = dateParts[2] + "/" + dateParts[1] + "/" + dateParts[0] + " " + dateAndTimes[1]; 
     return Convert.ToDateTime(convertableString); 
    } 
+0

먼저, 해당 형식을 'DateTime.Parse'로 직접 파싱 할 수 있습니다. 게다가'DateTime.ParseExact'는 모든 형식을 처리 할 수 ​​있습니다. 둘째, 파싱에 대한 질문이 아닙니다. 그것은 시간대 사이의 변환에 관한 것입니다. –

2

소스의 시간대가 bagladesh임을 명시 적으로 알고 있으므로 작업을 수행해야합니다.

var time = DateTime.Parse("2017-01-19 23:53:57"); 
var clientZone = TimeZoneInfo.FindSystemTimeZoneById("Bangladesh Standard Time"); 
var utcTime = TimeZoneInfo.ConvertTimeToUtc(time, clientZone); 
+0

와우, 작동 중입니다. 제 서버 중 하나에서 테스트했습니다. 그러나 이것이 왜 효과가 있는지 이해하지 못했습니다. 이 줄에서'var time = DateTime.Parse ("2017-01-19 23:53:57"); ' 시간은 기계의 TimeZone 구성으로 변환되어야합니다. 그런 다음 '방글라데시 표준시 (Bangladesh Standard Time)'형식을 변환하려고 시도하고 있는데 이는 잘못된 것입니다. – Moshii

+0

var time = DateTime.Parse ("2017-01-19 23:53:57"); 서버가 현지 표준 시간대로 구문 분석하지만 그는 다음을 알고 있습니다. :). –

+0

@Moshii - 방글라데시에서 * 시간을 UTC로 변환합니다. 그게 니가 원하는거야? 당신의 질문에, 당신은 방글라데시, 방글라데시, 무언가 *에 이르기까지 아무 것도 말하지 않았습니다. 당신은 그 무언가가 무엇 인지도 밝히지 않았습니다. –

관련 문제