2010-02-03 3 views
24

VB.NET에서 날짜 개체에서 한 달을 어떻게 뺍니까?Date 개체에서 한 달을 빼는 방법은 무엇입니까?

가 나는 시도했다 :

Today.AddMonths(-1) 

는하지만, 오늘은 01 월 2010 년임을 감안할 내가 얻는 결과는 01 12 월 2010 년이다. 내가 원하는 대답은 2009 년 12 월 1 일입니다.

.NET 프레임 워크에서이 작업을 수행하는 편리한 방법이 있습니까?

+1

확인을 클릭합니다. 이 질문 (및 답변)은 정말 나를 혼란스럽게합니다. 위의 문제점을 보여주는 정확한 코드는 무엇입니까? 저는 Today.AddMonths (-1)를 디버거에 입력했는데 제대로 작동합니다. 1 월에 있으면 1 년을 뺍니다. –

+2

안녕하세요 제이슨. 문제는 실제로 그 것이 아니 었습니다 .AddMonths()가 작동하지 않았습니다. 문제는 Date 객체가 변경 불가능하다는 것입니다. .AddMonths() 반환 값을 변수에 할당하지 않았습니다. 예를 들어 someDate.AddMonths (-1) 일 때 someDate = someDate.AddMonths (-1) 일 때 someDate.AddMonths를 수행했습니다. – Andrew

+1

그런 경우에도 someDate는 변경되지 않습니다. 예를 들어 2010 년 12 월 1 일이 아닌 2010 년 1 월 1 일로 설정됩니다. 그러므로 내 혼란. –

답변

41

실제로 변수를 Today로 전송해야합니다. 다음 코드는 예상 한 결과를 산출합니다 (게시물이 나를 두 번 생각하게 만들었 기 때문에 방금 확인했습니다).

Dim dt As DateTime = Date.Today 
dt = dt.AddMonths(-2) 

Dim x As String = dt.ToString() 
+2

* 한숨 * 나는 그 사람에게 다시 떨어진 것을 믿을 수 없다 ... – Andrew

8

이 잘 작동, 당신은 날짜 시간이 imutable 있음을 유의해야합니다.

Dim d As DateTime 
d = New DateTime(2010, 1, 1) 
d = d.AddMonths(-1) 

는 인스턴스의 값을 수정하지 않도록 , 추가 또는 빼기로 날짜 시간의 인스턴스에 DateTime Structure

계산을 살펴 되세요. 대신 계산 은 계산의 결과 값인 의 새 인스턴스를 반환합니다.

+1

고마워. 그 모든 사업은 혼란 스러웠습니다. – dbasnett

0

다음을 사용했으며 작동합니다.

Dim dtToday As DateTime = Date.Today 
dtToday = dtToday.AddMonths(-2) 
1
Dim d As DateTime = #1/1/2010# 
d = d.AddMonths(-1)