DateTime에서 일 빼기


142

내 C # 프로그램에 다음 코드가 있습니다.

DateTime dateForButton =  DateTime.Now;  
dateForButton = dateForButton.AddDays(-1);  // ERROR: un-representable DateTime

실행할 때마다 다음 오류가 발생합니다.

더하거나 빼는 값은 표현할 수없는 DateTime이됩니다.
매개 변수 이름 : 값

이 오류 메시지는 이전에 본 적이 없으며 왜 내가보고 있는지 이해하지 못합니다. 지금까지 읽은 답변에서 추가 작업에서 -1을 사용하여 일을 뺄 수 있다고 생각합니다. 그러나 내 질문에 따르면 이것이 내가하려는 일의 경우가 아닙니다.


작동해야합니까, 이것이 문제 영역입니까?
V4Vendetta

1
그것은 ...이에 문제가 표시되지 않습니다, 작업에
티그

12
이 오류는 일반적으로 간격을 빼려고 DateTime.MinValue하거나 무언가를 추가 DateTime.MaxValue하려고 할 때 (또는이 최소-최대 간격 이외의 날짜를 인스턴스화하려고 할 때) 발생합니다. MinValue어딘가에 할당하지 않습니까?
CyberDude

1
CyberDude, 귀하의 의견은 실제로 답변입니다. 귀하의 의견에 투표하고 답변으로 지정하려면 어떻게해야합니까?
부에나

1
라인 2 및 코드 3의 코드를 게시하시기 바랍니다
파나지오티스 Kanavos

답변:


70

이 오류는 일반적으로 간격을 빼려고 DateTime.MinValue하거나 무언가를 추가 DateTime.MaxValue하려고 할 때 (또는이 최소-최대 간격 이외의 날짜를 인스턴스화하려고 할 때) 발생합니다. MinValue어딘가에 할당하지 않습니까?


287
DateTime dateForButton = DateTime.Now.AddDays(-1);

14
이 답변은 주제 제목에 답변합니다. 이것은 절대로 downvoted해서는 안됩니다. 대부분의 사람들이 구글에서 온다. 이 답변에 동의하지 않는 사람은 주제 제목을 수정해야합니다. ¬¬
MarceloBarbosa

몇 달 동안 나를 위해 일했습니다.
David Jones

48

넌 할 수있어:

DateTime.Today.AddDays(-1)


7

dateTime.AddDays(-1) 으로부터 언젠가 빼기하지 않습니다 dateTime참조. 원래 참조에서 하루를 빼고 새 인스턴스를 반환합니다.

DateTime dateTime = DateTime.Now;
DateTime otherDateTime = dateTime.AddDays(-1);

이것이 어떻게 OP의 문제를 해결할 수 있는지 설명해 주시겠습니까? 거의 모든 사람이 코드를 작성할 수 있습니다. 쉬운 부분입니다. (그러나이 경우 실제로 이것이 어떻게 OP의 문제를 해결할지 알 수 없습니다.)
fourpastmidnight

5

AddDays (-1) 사용에 문제가 있습니다 .

내 솔루션은 TimeSpan 입니다.

DateTime.Now - TimeSpan.FromDays(1);

당신의 정확한 문제는 무엇입니까?
Arash. 잔디

4

AddDays 메소드의 객체 (예 : 대상 변수)는 소스와 같을 수 없습니다.

대신에:

DateTime today = DateTime.Today;
today.AddDays(-7);

대신 이것을 시도하십시오 :

DateTime today = DateTime.Today;
DateTime sevenDaysEarlier = today.AddDays(-7);

1
우리가 다른 기존 답변을 찾고 있다면이 답변은 실제로 새로운 요점을 가져 오지 않습니다.
Isuka

1

날짜 개체에서 직접 일 수를 직접 줄이는 대신 먼저 날짜 값을 얻은 다음 일을 뺍니다. 아래 예를 참조하십시오.

DateTime SevenDaysFromEndDate = someDate.Value.AddDays(-1);

여기에서 someDate는 DateTime 유형의 변수입니다.


0

AddDays(-1)몇 달을 건너려고 할 때까지 사용 했습니다. 2017-01-01에서 2 일을 뺄 때 결과는 2016-00-30입니다. 월 변경을 올바르게 처리 할 수 ​​없습니다 (연도는 괜찮은 것처럼 보였습니다).

사용 date = Convert.ToDateTime(date).Subtract(TimeSpan.FromDays(2)).ToString("yyyy-mm-dd"); 하고 문제가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.