2013-05-13 5 views
2

내가 문자열구문 분석하는 방법 날짜 시간은

1368352924.281610000 

DateTime을 제시하고있다 sec.ms.

어떻게 해석 할 수 있습니까?

이 시도되어 혼란에 대한

string rststr = Convert.ToString(result);      
string[] rststrarr = rststr.Split('.'); 
DateTime.Parse(rststrarr[0]); 

편집 죄송합니다. 그것은 높은 resoulution에서 유닉스 타임 스탬프였다 지적했다. 친절하게 생각합니다.

+0

당신의 가치는 무엇 날짜를 표현해야

다음은 다음 할 수있는, 당신이이 값의 유형에 대한 올바른입니다 가정? "그것이 날짜/시간을 나타냅니다"를 넘어서는 자세한 내용을 알고 있습니까? 특정 날짜 - 값에서이 문자열로 어떻게 이동하는지 알고 있습니까? –

+1

날짜/시간이란 무엇입니까? 어떤 DateTime 값이 0.0일까요? –

+0

@MatthewWatson. 내 "참조 날짜"대신 "데이터 텀"이라는 용어를 정확하고 올바르게 사용합니다. –

답변

3

그것은이 번호 잰 1 일 이후 경과 된 시간 (초)을 나타내는 가능성, 1970 UTC. 이것은 "Unix Epoch"값이며 많은 시스템 및 날짜 형식에서 매우 일반적입니다.

// you said you were starting with a string 
string s = "1368352924.281610000"; 

// but you are going to need it as a double. 
// (If it's already a double, skip these two steps) 
var d = double.Parse(s); 

// starting at the unix epoch 
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); 

// simply add the number of seconds that you have 
DateTime dt = epoch.AddSeconds(d); 


Debug.WriteLine("{0} {1}", dt, dt.Kind); // prints 05/12/2013 10:02:04 Utc 
+2

+1 그것은 Unix Epoch이고 소수는 매우 높은 해상도로 초 단위입니다. – jgauffin

+2

나는 Convert.ToDouble 대신에'double.Parse' 또는'double.TryParse'를 선호합니다. ([Double.TryParse 또는 변환.ToDouble - 빠르고 안전합니까?] (http://stackoverflow.com/questions/586436/double-tryparse-or-convert-todouble-which-is-faster-and-safer) –

+0

@MattJohnson. 이것은 귀하의 대답에 반영되지 않습니다 : 질문은 구체적으로 밀리 초를 구문 분석하는 방법이었습니다. 특정 예제가 유닉스 시대에서 벗어난 초일지도 모르겠다. 그렇다고해도 그것이 위험한 가정이라는 것을 지적하는 것은 가치가있다. (예를 들어, 1 년 밖에 안됐다.) 그 질문에 대한 정보가 충분하지 않아서이를 범주 적으로 가정하지 마십시오. –

3

TimeSpan.FromMilliseconds이 필요하고 밀리 초 값이 참조하는 참조 시간에 추가해야합니다.

(편집 2 : 참조 날짜를 가정하면 DateTime.MinValue입니다)

double d = double.Parse("1368352924.281610000"); 
TimeSpan ts = TimeSpan.FromMilliseconds(d); 
DateTime dt = DateTime.MinValue.Add(ts); 

피부에 여러 가지 방법이 있습니다 편집이, WOUTER Huysentruit는 지적한다. 그리고 당신은 당신의 시나리오 예에 대한 의도를 강조하는 하나를 선택해야합니다 (FromOADate를 참조 후자의 경우)

DateTime dt = DateTime.MinValue.Add(ts); 
dt = DateTime.MinValue + ts; 
dt = dateTime.MinValue.AddMilliseconds(d); 
dt = DateTime.FromOADate(d); 

+0

'DateTime.MinValue + ts'도 작동합니다. –

+0

@WouterHuysentruit. 그것은 실제로, 그리고 그렇게'DateTime.MinValue.AddMilliseconds (d);'- 선택할 수있는 많은 옵션! –

+0

옵션이 강조되도록 동의 함, 의도가 모두입니다. –

관련 문제