2014-02-21 1 views
4

C#의 Excel에서 비정규 시간 형식을 읽으려고합니다. Excel의 시간 값은 "29-Aug-01 11.23.00.000000000 PM"이며, 셀에서 Excel 형식은 '시간'이 아닌 '규칙적인'형식입니다.C#에서 Excel 이외의 표준 시간 형식을 읽습니다.

이제 Excel에서 시간을 읽고 asp.net/c#의 달력 시간에 시간을 할당해야합니다. 프로그램에서 시간 형식을 이해하게하려면 어떻게해야합니까?

큰 thx!

내 코드

DateTime expTime = DateTime.ParseExact(strDate, "dd-MMM-yy hh.mm.ss.fffffffff tt",  System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat); 

답변

1

내가 비슷한 솔루션을 가지고 있지만, 더 정확도는 작동하지 않습니다.

string s = "29-Aug-01 11.23.00.000000000 AM"; 

DateTimeOffset myDate = DateTimeOffset.ParseExact(
    s, 
    "dd-MMM-yy hh.mm.ss.fffffff00 tt", 
    System.Globalization.CultureInfo.InvariantCulture); 

편집 : 당신은 문자 'F'더 후 7을 사용할 수 없습니다.

+1

+1을 사용하여 날짜 문자열을 구문 분석하려고 시도합니다.이 작업은 확실히 정확하며 OP는 밀리 초 동안 처음 7 자리를 고려해야합니다. – Habib

+0

Thx! 그것은 작동합니다! 출력은 "8/29/2001 11:23:00 AM-04:00"이고, "-04 : 00"은 무엇입니까? 시간대? 적어도 밀리 초 또는 나노 초 이상 표시가 필요한 경우 어떻게해야합니까? – Windtalker

+0

@Windtalker 무슨 출력? 결과를 출력하거나 형식을 지정하는 코드를 보여주지 않았습니다. 형식을 지정하지 않고 Console.WriteLine 또는 String.Format을 사용하면 현재 사용자의 날짜 형식이 사용됩니다. 이 경우 미국 형식이 사용 된 것처럼 보입니다. –

0

DateTime 형식이 나노초를 나타낼 수 없으므로 원래 형식 문자열이 실패합니다. 다음 형식 문자열은 작동합니다 다음 00 문자는 해석 중에 리터럴로 해석되고 무시되기 때문에

var expTime = DateTime.ParseExact(strDate, "dd-MMM-yy hh.mm.ss.fffffff00 tt", 
       CultureInfo.InvariantCulture); 

이 작동합니다.

시스템의 UI Culture 대신 CultureInfo.InvariantCulture을 전달합니다. 이렇게하면 사용자 UI 문화가 다른 언어로 설정된 경우에도 영어 월 약어가 사용됩니다. 그렇지 않은 경우 DateTime.ParseExact은 사용자의 언어 월 약어

+0

그것은 작동합니다! 고맙습니다! – Windtalker