2012-07-11 101 views
0

如何查找前两年的月份中的第一个和最后一个日期。例如,今天是07-01-2012(mm-dd-yyyy);我想从2011年的数据... 01-01-2011 01-31-2011 02-01-2011 02-28-2011。类似的东西 谢谢。如何在一个月内找到第一个和最后一个日期

+1

请详细说明... – 2012-07-11 10:24:21

+2

现在是什么? Java,PHP,MySQL? – 2012-07-11 10:24:33

+0

我对你的标签很困惑..你已经标记了java,php,mysql,sql这些让你感到困惑......你能告诉我们你想要在哪里发生这个逻辑吗? – Deepak 2012-07-11 10:28:20

回答

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

我想显示数据明智的月,我们只显示第一个日期和最后一个日期。上一年或明年 – Rishabh 2012-07-11 10:27:48

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

首先感谢,我们希望月度的数据从07/01/2010到07/01/2012。比我该怎么做? – Rishabh 2012-07-11 10:39:15

+0

@Rishabh:我已经添加了上面的代码,请检查它。希望它能为你工作。 – 2012-07-11 11:16:04

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

以下是为您指定

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)); 
    } 

这个程序打印所有从过去2年的月开始和结束日期的问题java实现今天。最后的日期将是当天!

0

我的算法是查找当月的天数。基于此我可以找到第一天和最后一天。 要查找一个月内的天数,我们可以使用拳头规则。 只为二月的一个月,我们必须检查闰年

31天月 (一个月序列编号> 7)(月序列编号+ 1)%2:?(一个月序列编号)%2. 如果上述等式的结果是真的,那么它是31天的月份,否则是30天的月份。 仅限seqno 2(Feb)月份,我们必须考虑闰年计算。

相关问题