2010-08-18 5 views
10

ISO 8601 마침표를 .NET TimeSpan/ticks/milliseconds로 변환하는 .NET 3.5의 기본 제공 방법이 있습니까?ISO 8601 형식의 기간을 틱/밀리 초로 변환

+0

@Timwi : 나는 간결한 팬이다. 그러나, 나는 또한 자연스럽게 친절한 사람입니다. 직장에서 좋은 하루 되시길 바랄 까닭은 무엇입니까? – yas4891

+0

SO (및 기타 스택 Exchange 네트워크 사이트)의 스타일이 그렇게하지 않기 때문입니다. 토론을 위해 http://meta.stackoverflow.com을 사용하십시오. – Richard

+0

제거하여 친근하지 않다는 뜻은 아닙니다. 그것은 단지 그 질문에 아무 것도 기여하지 않는다는 것입니다. 이것은 개인화 된 게시물이있는 토론 포럼이 아니라는 것을 기억하십시오. – Timwi

답변

1

불행하게도 .NET에는 직접 제작 된 것이 없습니다.

그리고 문자열 구성 요소를 알고있는 경우 사용할 수있는 .NET 4 이전에는 TimeSpan.ParseExact이 없습니다.

+0

은 첫 번째로 답변 한 것으로 표시되어 있습니다. – yas4891

2

.Net 프레임 워크에 직접적으로 아무것도없는 경우에도 나는 Joda.org이 그런 것을 구현했으며 그 중 noda-time이라고하는 Jon 포트를 기억한다는 것을 알게되었습니다.

처음으로 this source code을 보면이 목적을 위해 여기에 뭔가를 구현 한 것으로 나타났습니다. 어쩌면이 프로젝트에서 좀 더 조사를해야 할 것입니다.

+0

해당 링크를 제공해 주셔서 감사합니다. 상당히 인상적인 작업이 여기에서 수행되었습니다. – yas4891

1

기본 제공 방법이 없습니다. 더 복잡하게하기 위해 ISO 8601 durations은 사실 TimeSpan 또는 시간을 측정하는 다른 정확한 방법과 완전히 호환되지 않습니다. 그 이유는 ISO 8601 기간이 년과 월을 포함 할 수 있기 때문입니다. 그 문제는 1 년에 365 일 또는 366 일, 28 일에서 31 일에 한 달이 걸릴 수 있다는 것입니다. Joda-Time solves this 이러한 부정확 한 기간을 순식간에 관련시킴으로써 문제가 발생합니다.

당신은 운과 기간은 P [YYYY]를 사용하는 일이없는 한 - [MM을] - [DD] T [HH] : [mm] :

string period = "P0003-06-04T12:30:05"; 
TimeSpan span = new TimeSpan(DateTime.Parse(period.Remove(0,1)).Ticks); 
: [SS] 형식 단지 당신에게 있기 때문에
+0

내 특정 작업에 대해 "PT1S"또는 "PT0.05999999999"와 같아야하므로 구문 분석이 실제 문제가 아닙니다. 그냥 좋은 솔루션을 얻고 싶었습니다. 귀하의 답변 주셔서 감사합니다! – yas4891

6

XmlConvert.ToTimeSpan은 영원히 주변에 있었던 것처럼 보이고 정확히 원하는 것을 수행합니다.

관련 문제