2014-12-18 6 views
2

시간 범위를 사용하여 두 날짜 사이의 요일을 찾으려고합니다.왜 Timespan subtract 메서드가 오류 값을 반환합니까?

nextdate1='2014-12-20' 

today `='2014-12-18'` 

내 샘플 코드는 다음과 같습니다

DateTime nexdate1 = dr.GetDateTime(2); //gets from database. I checked and the value is correct 
DateTime today = DateTime.Now; 
TimeSpan nextdate = nexdate1.Subtract(today); 
int difference = nextdate.Days; 

가 지금은 difference=1를 얻을. 실제로는 difference is 2 (20-18)입니다.

왜 차이가 1로 표시됩니까?

+1

어떤 날짜의 "시간"부분은? 예를 들어 1 시간 23 시간이라고 말하는 것입니까? – Aron

+1

당신은 단지 일 대신에 전체 DateTime을 뺀 것입니다. (47 시간처럼 sth.는 당신에게 하루를 줄 것입니다.) dr.GetDateTime (2) .Date와 DateTime.Now.Date를 사용해보고 if 차이가 있습니다. –

+0

시간대 ?? "빼기 (DateTime) 메서드는 빼기를 수행 할 때 두 DateTime 값의 Kind 속성 값을 고려하지 않습니다 .DatTime 개체를 빼기 전에 개체가 같은 시간대의 시간을 나타내도록하십시오. 시간대 차이. " –

답변

1

(int)Math.Round(nextDate.TotalDays) 실제로 날짜 변수가 있기 때문에 당신의 결과가 영향을받을 당시의 시간 부분을 가지고해야합니다.

은 사용이 DateTime.Date

이처럼 수행 : 그래서 당신은 당신의 날짜 값의 날짜 부분을 찾을 수있다

DateTime nexdate1 = dr.GetDateTime(2); 
DateTime today = DateTime.Now; 
TimeSpan nextdate = nexdate1.Date.Subtract(today.Date); // Here find only date part from datetime value. 
//TimeSpan nextdate = nexdate1-today 
int difference = nextdate.Days; 
+0

예. 작동합니다. 감사합니다. –

+0

@SaraJohn @SaraJohn 답변을 제안하면 답변을 표시해주세요. –

4

TimeSpan.Daysint입니다. 응답이 잘리지 않습니다. 다음 코드에서

:

difference

var date1 = DateTime.Parse("Dec 12, 2014"); 
var date2 = DateTime.Parse("Dec 14, 2014"); 
var difference = (date2 - date1).Days; 
2.

로 설정하지만이 코드 :

var date1 = DateTime.Parse("Dec 12, 2014 12:01 AM"); 
var date2 = DateTime.Parse("Dec 14, 2014"); 

var difference = (date2 - date1).Days; 

difference은 1

우리를로 설정 시간대를 보면 date2 - date1, 우리는 다음을 얻는다. 날개 :

{1.23:59:00} 
    Days: 1 
    Hours: 23 
    Minutes: 59 
    Seconds: 0 
    TotalDays: 1.9993055555555554 

당신은 며칠의 차이에서 찾고 있도록 nextDate = nexdate1.Date.Subtract(DateTime.Today);을 설정하거나

+0

감사합니다. 멋진 설명입니다. –

관련 문제