2010-06-29 10 views
39

별도의 날짜 및 시간 필드가있는 iSeries에서 데이터를 검색 중입니다. 내 C# 프로젝트의 DateTime 필드에 이들을 결합하려고합니다. DateTime 필드에 시간 만 추가하는 방법은 없습니다. 어떻게 이것을 제안 하시겠습니까?날짜 및 시간을 C#의 DateTime에 결합하십시오.

답변

44

어떻게 저장됩니까? 해당 날짜의 자정이 DateTime이고 시간이 TimeSpan 인 것으로 가정하면 추가 할 수 있습니다.

DateTime date = ...; 
TimeSpan time = ...; 

DateTime result = date + time; 
+0

나는이 것이 나를 위해 최선을 다할 것이라고 생각한다. 감사! –

+1

날짜 변수에 시간 부분이 00:00:00 인 경우에만 작동하며 그렇지 않으면 날짜 변수 위에 시간 변수가 추가되어 예기치 않은 결과가 발생합니다. – batmaci

+2

@batmaci 예, 답변에 구체적으로 나와 있습니다. –

8

"시간"입력란에서 TimeSpan을 쉽게 만들 수 있습니다.

그냥 할 것을 일단 :

TimeSpan time = GetTimeFieldData(); 
dateField = dateField.Add(time); 
67

당신은 아주 쉽게이 작업을 수행 할 수 있습니다

DateTime dateOnly; 
DateTime timeOnly; 
... 
DateTime combined = dateOnly.Date.Add(timeOnly.TimeOfDay); 

TimeOfDay 당신이 다음 날짜에 추가 TimeSpan을 반환합니다.

(감사의 코멘트 아래에 있음) - 안전을 위해 dateOnly.Date을 사용하여 날짜 부분 만 확인하십시오.

+4

뷰어에 대한주의의 단어를 모두 여기에 있다고 가정하는 당신은'DateTime dateOnly'에만 포함되어 있는지 확인해야합니다 그렇지 않으면 날짜가 큰데, TimeSpan이 충분히 큰 경우, '추가'를 실행하면 하루가 1 일 증가합니다! – Coops

+3

@CodeBlend가 정확합니다. 나에게 이런 일이 일어났습니다. 자신을 감추는 가장 좋은 방법은 다음과 같습니다.'DateTime combined = dateOnly.Date.Add (timeOnly.TimeOfDay); ' –

+2

@RodolfoDeLosSantos! 귀하의 제안과 일치하도록 솔루션을 업데이트하라는 요청을 보냈습니다. –

4
Datetime date = new DateTime(Date1.Year, Date1.Month, Date1.Day, Time1.Hour, Time1.Minute, Time1.Second); 
-2

간단히 날짜 부분과 시간 부분을 별도의 문자열로 포맷 한 다음 함께 결합하십시오. 그런 다음 문자열을 다시 DateTime 객체로 구문 분석 할 수 있습니다.

+1

매우 효율적이지 않습니다. – Lazlo

0

날짜에 시간을 추가하는 것이 가장 큰 문제는 아닙니다. @ 리피드 코세시가 언급했듯이 날짜부터 DateTime을 만든 다음 시간을 .Add로 만듭니다.

그러나 iSeries 날짜 및 시간 (유닉스 시간이 대부분)이 .Net 표현과 동일한 표현인지 확인해야합니다. 따라서 1970 년 1 월 1 일 DateTime에 추가하여 변환해야 할 수도 있습니다.

2

DateTimeTimeSpan을 추가하고 다음과 같이 쓸 수 있습니다.

// inside consuming function 
ISeriesObject obj = getMyObject(); 
DateTime dt = getDate(obj) + getTime(obj); 

private DateTime getDate(ISeriesObject obj) 
{ 
    //return a DateTime 
} 


private TimeSpan getTime(ISeriesObject obj) 
{ 
    //return a TimeSpan 
} 
2

이 수행해야합니다

var output = date.Date + time.TimeOfDay; 

또는

var output = new DateTime(date.Year, date.Month, date.Day, 
          time.Hour, time.Minute, time.Second); 

두 변수 datetime이 유형 DateTime

관련 문제