2012-07-11 4 views
0

지난 2 년 동안 한 달의 첫 번째 날짜와 마지막 날짜를 어떻게 찾을 수 있습니까? 예를 들어, 오늘은 07-01-2012 (mm-dd-yyyy)입니다. 2011 년 데이터를 찾고 싶습니다. 01-01-2011 01-31-2011 02-01-2011 02-28-2011. 그런 것 같아 고마워.한 달에 첫 번째와 마지막 날을 찾는 방법

+1

자세히 ... –

+2

지금은 무엇입니까? Java, PHP, MySQL? –

+0

나는 당신의 태그와 꽤 혼동 스럽다. 당신은 혼란 스럽다 java, php, mysql, sql을 태그했다. 당신은이 논리가 일어나기를 원하는 곳에 대해 우리에게 말할 수 있는가? – Deepak

답변

1
select LAST_DAY('2011-01-01') from dual; 
+0

데이터를 월별로 표시하려면 월에 첫 번째 날짜와 마지막 날짜 만 표시하십시오. 이전 연도 또는 내년 – Rishabh

0

PHP의 기능 date('t') 한 달에 일의 양을 반환 할 수 있습니다

echo date('t', mktime(1, 1, 1, 2, 1, 1970)); 
// outputs 28 

그리고 둘째로, 달의 첫째 날이 항상 사용하여이 작업을 수행 할 수 1

2

됩니다 php 날짜 함수. 다음

$first = date('Y-m-d', mktime(0, 0, 0, $month, 1, $year)); 
$last = date('Y-m-t', mktime(0, 0, 0, $month, 1, $year)); 

$Startyear=2010; 
$Endyear=2012; 
$monthstart=array(); 
$monthend=array(); 
for($i=$Startyear;$i<=$Endyear;$i++){ 
for($j=1;$j<=12;$j++){ 
$monthstart[$i][$j]=date('Y-m-d', mktime(0, 0, 0, $j, 1, $i)); 
$monthend[$i][$j]=date('Y-m-t', mktime(0, 0, 0, $j, 1, $i)); 
} 
} 
+0

먼저, 감사합니다. 월별 데이터가 2010 년 7 월 1 일부터 07/01/2012까지입니다. 무엇보다해야합니까? – Rishabh

+0

@Rishabh : 위의 코드를 추가하십시오. 희망 사항을 확인하십시오. 희망 사항이 적용됩니다. –

0

보십시오이

DECLARE @mydate DATETIME 

SELECT @mydate = GETDATE() 

SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@mydate)),@mydate),101) , 
'Last Day of Previous Month' 

UNION 

SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@mydate)-1),@mydate),101) AS Date_Value, 
'First Day of Current Month' AS Date_Type 

UNION 

SELECT CONVERT(VARCHAR(25),@mydate,101) AS Date_Value, 'Today' AS Date_Type 

UNION 

SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))),DATEADD(mm,1,@mydate)),101) , 
'Last Day of Current Month' 

UNION 

SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))-1),DATEADD(mm,1,@mydate)),101) , 
'First Day of Next Month' 
0

는 전 (前) 2 년간의 모든 달의 시작 및 종료 날짜

List<Date> months = new ArrayList<Date>(); 
    Calendar currentDate = GregorianCalendar.getInstance(); 
    Calendar today = GregorianCalendar.getInstance(); 
    int currentYear = currentDate.get(Calendar.YEAR) - 2; 
    int noOfMonths = 11 - today.get(Calendar.MONTH); 
    SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy"); 
    currentDate.set(Calendar.DATE, 1); 
    currentDate.set(Calendar.YEAR, currentYear); 

    while (currentYear <= today.get(Calendar.YEAR)) { 

     for (int monthCount = 0; monthCount <= noOfMonths; monthCount++) { 

      currentDate.set(Calendar.DATE, 1); 
      // adding start date 
      months.add(currentDate.getTime()); 
      // processing end date 
      currentDate.set(Calendar.DATE, 
        currentDate.getActualMaximum(Calendar.DATE)); 
      // adding end date 
      months.add(currentDate.getTime()); 

      // goes to next month 
      currentDate.set(Calendar.MONTH, 
        currentDate.get(Calendar.MONTH) + 1); 
     } 

     if (currentDate.get(Calendar.MONTH) == today.get(Calendar.MONTH)) { 
      if (today.get(Calendar.DATE) != 1) { 
       currentDate.set(Calendar.DATE, 1); 
       // adding start date 
       months.add(currentDate.getTime()); 
      } 
      months.add(today.getTime()); 
      break; 
     } 
     currentYear++; 

     if (currentYear == today.get(Calendar.YEAR)) { 
      noOfMonths = today.get(Calendar.MONTH) - 1; 
     } else { 
      noOfMonths = 11; 
     } 
     currentDate.set(Calendar.YEAR, currentYear); 

    } 

    for (Date date : months) { 
     System.out.println(format.format(date)); 
    } 

이 프로그램은 인쇄

을 지정한 문제에 대한 자바 구현 오늘. 마지막 날짜가 현재 날짜입니다.

0

내 알고리즘은 해당 월의 일 수를 찾는 것입니다. 그것을 바탕으로 나는 첫날과 마지막 날을 발견 할 수 있습니다. 한 달 동안의 일 수를 찾으려면 주먹 규칙을 사용할 수 있습니다. 만에 우리는 윤년을 확인해야 2월 월

삼십일일 월 (월 서열 없음> 7) (개월 서열 없음 + 1) % 2 : (개월 서열 없음) % 2 하는 경우 위의 방정식에 대한 결과가 true이면 31 일 월, 그렇지 않으면 30 일 월입니다. 1 월 seqno 2 (2 월)에 대해서만 윤년 계산을 고려해야합니다.

관련 문제