2014-04-23 5 views
0

모든 주요 브라우저에 하나의 브라우저 확장이 만들어졌습니다. 설치가 완료되면 관련된 브라우저에서 내 응용 프로그램에 날짜 시간이 표시됩니다. 내 시간대 형식은 날짜/시간 형식이 다음과 같은 여러 브라우저마다 다릅니다.C#을 사용하여 다른 DateTime 문자열을 단일 DateTime 형식으로 변환

크롬 : 4/10/2014 1:06:29 PM

파이어 폭스와 IE : 2014년 4월 10일 (목요일) 오후 1시 14분 0초

사파리 : 2014년 4월 23일 (수요일) 14시 0분 17초 오후

나는 그 모든 다른 변환해야 문자열 형식 datetime을 단일 datetime 형식으로 변환하는 중입니다. 현재는 이 나머지 형식

에 대한 크롬 날짜 형식에 대한 좋은 작동되지 않고, 아래의 코드를 노래
public bool CompareInsertTimes(string strPluginDatetime) 
    { 
DateTime pluginModifyDate;    
pluginModifyDate = DateTime.ParseExact(strPluginDatetime, "M/d/yyyy h:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture); 

"strPluginDatetime는"파이어 폭스, IE, 사파리 가 그럼 난 날짜 형식을 비교하는 형식으로 아래 사용하고 크롬에서 날짜 문자열

Convert.ToDateTime(pluginModifyDate.GetDateTimeFormats()[28]) < Convert.ToDateTime(urlModifydateinDB.GetDateTimeFormats()[28]) 

그래서 내 데이터베이스 날짜에, 하나의 날짜 형식이 모든 작동

+1

는 여러 형식을 취 DateTime.ParseExact''의 과부하 봤어? 어쨌든 문자열은 어디에서 가져 왔니? 클리너 옵션이있을 수 있습니다. –

+2

소스에서 올바른 형식으로 날짜 - 시간 값을 가져 오는 것이 좋습니다. 브라우저 확장이 현재 UTC 날짜/시간을 ISO-8061 형식이나 UNIX 타임 스탬프로 가져올 수 없습니까? – Dai

+1

10 월 4 일 또는 4 월 10 일 "4/10/2014 1:06:49 PM"입니까? 그것은 당신이 어디에 있느냐에 달려 있습니다. 모호성을 해결할 방법을 찾아 내지 않으면 까다로운 작업이 될 것입니다. – spender

답변

-1

에 다른 문자열 형식의 날짜 시간을 변환 할 가능성이있다 :

string[] dateStrings = { "4/10/2014 1:06:49 PM", "Thursday, April 10, 2014 1:14:00 PM", "Wednesday, April 23, 2014 14:00:17 PM"}; 
string[] formats = { "M/d/yyyy h:mm:ss tt", "dddd, MMMM dd, yyyy h:mm:ss tt", "dddd, MMMM dd, yyyy HH:mm:ss tt" }; 
DateTime[] dates = new DateTime[dateStrings.Length]; 
for(int i = 0; i < dateStrings.Length; i++) 
{ 
    DateTime dt; 
    bool ok = DateTime.TryParseExact(dateStrings[i], formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt); 
    if (ok) dates[i] = dt; 
} 

테스트 :

Console.Write(string.Join(", ", dates)); 

출력 :

10.04.2014 13:06:49, 10.04.2014 13:14:00, 23.04.2014 14:00:17 
+1

나는 CultureInfo.InvariantCulture가 맞다는 것을 100 % 확신하지 못했습니다. 저는 이것을 체크하지는 않았지만 브라우저가 현재 사용자의 지역 설정을 사용할 것으로 기대했을 것입니다. 어쨌든 다른 문화권의 브라우저에서 테스트하십시오. – Joe

+0

좋은 점이면 op가 null 또는 CulturInfo.CurrentCulture를 전달해야합니다. 그러나 op가 또한 InvariantCulture를 사용했기 때문에 날짜가 어디에서 왔는지 정확히 알지 못합니다. –

관련 문제