2011-10-27 2 views
0

현재 날짜를 사용하여 두 개의 특정 날짜를 가져오고 싶습니다.현재 날짜를 참조로 사용하여 특정 날짜 가져 오기

예를 들어 오늘이 10/27/2011 인 경우 7/01/2011 및 9/30/2011을 갖고 싶습니다. 그 3 개월 기간 (당월 제외) 어떻게 할 수 있습니까?

현재 나는 자체 설계된 방법을 따르고 있지만, 그다지 좋지 않다고 생각합니다. 여기에 코드가 있습니다.

TimeSpan TSFrom = new TimeSpan(90 + DateTime.Now.Day, 0, 0, 0, 0); 
    TimeSpan TSTo = new TimeSpan(DateTime.Now.Day, 0, 0, 0, 0); 
    Response.Write(DateTime.Now.Subtract(TSFrom).ToShortDateString()); 
    Response.Write(DateTime.Now.Subtract(TSTo).ToShortDateString()); 

이 코드는 다음 값을 반환

2011년 7월 2일 - 2011년 9월 30일

그것 아직도 완벽한 방법처럼 보인다 허용 무엇의 일부가 가서 처음 보는 동안 날짜가 첫날부터 시작해야하는 데는 달의 두 번째 날부터 시작됩니다. 몇 달이 29 일에 끝나기 시작하고 30 일에 끝나기 때문에 생각합니다. 그렇다면 2010 년 7 월 1 일부터 9 월 30 일까지 완벽한 날짜를 얻으려면 어떻게해야합니까? 2011 년

감사합니다.

답변

3
var now = DateTime.Now; 
var end = new DateTime(now.Year, now.Month, 1).AddDays(-1); // Last day of previous month 
var start = new DateTime(now.Year, now.Month, 1).AddMonths(-3); // First day of third-last month 

(로컬 변수에 new DateTime(now.Year, now.Month, 1)을 저장할 수,이 개성 유의 문제입니다 최종 맛, 내 생각 엔 ...)

1
DateTime now = DateTime.Today; 
DateTime firstOfMonth = now.AddDays(-now.Day + 1); 
DateTime beginning = firstOfMonth.AddMonths(-3); 
DateTime end = firstOfMonth.AddDays(-1); 

우리는 (현재의 일 - 1) 빼서 월 초에 "롤백"기간의 끝이 firstOfMonth.AddDays(-1);이며, 기간의 시작 firstOfMonth.AddMonths(-3);

+0

-1 : 이것은 분명히 잘못되었습니다. 질문에 제공된 값을 삽입하면 (예 : 현재 날짜는 2011/10/27입니다. 2011/7/1-2011/9/30 대신 2011/10/1-2011/12/31이됩니다 ... 아흐메드는 고정 된 "분기 별"기간을 얻지 만 선행 3 개월 만받습니다. – MartinStettner

+0

@MartinStettner 나는 그의 요청을 잘못 읽었습니다. – xanatos

+0

@MartinStettner Redone :-) – xanatos

1
var fromWithDay = DateTime.Today.AddMonths(-3); 
var from = new DateTime(fromWithDay.Year, fromWithDay.Month, 1); 
var toWithDay = DateTime.Today; 
var to = new DateTime(toWithDay.Year, toWithDay.Month, 1).AddDays(-1); 
입니다

그것도 짧은 미만 읽을 수

+0

좋은 점은'var toWithDay = DateTime.Now; '입니다. – Otiel

+0

@Otiel, OP는 시간이 아닌 날짜에 관심이 있거나 뭔가 빠졌다고 생각합니까? –

+0

네 말이 맞아,하지만 내 의견은 날짜 나 시간에 관한 것이 아니야. 귀하의 스 니펫에서 '~'은 '2012 년 3 월 31 일'과 같을 것이고, OP는 '2010 년 9 월 30 일'을 원할 것입니다. var toWithDay = DateTime.Today.AddMonths (4); 대신'var toWithDay = DateTime.Now;'또는'var toWithDay = DateTime.Today;'를 사용하면 OP의 요청을 존중합니다. – Otiel

0
DateTime now = DateTime.Now; 
DateTime firstDayOfThisMonth = new DateTime(now.Year, now.Month, 1); 
DateTime startDate = firstDayOfThisMonth.AddMonths(-3); 
DateTime endDate = firstDayOfThisMonth.AddDays(-1); 
Console.WriteLine(startDate); 
Console.WriteLine(endDate); 
관련 문제