如何找到过去2年中一个月的第一个和最后一个日期。例如,今天是07-01-2012(mm-dd-yyyy);我想找到2011年的数据...... 2011年1月1日 2011年1月31日 2011年2月1日 2011年2月28日。这样的事情 谢谢。
答案 0 :(得分: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));
}
}
答案 1 :(得分:1)
select LAST_DAY('2011-01-01') from dual;
答案 2 :(得分:0)
PHP的函数date('t')
可以返回一个月内的天数:
echo date('t', mktime(1, 1, 1, 2, 1, 1970));
// outputs 28
其次,本月的第一天将始终为1
答案 3 :(得分: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'
答案 4 :(得分:0)
以下是您指定的问题的java实现
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年的所有月份开始和结束日期。最后一个日期是当天!
答案 5 :(得分:0)
我的算法是查找当月的天数。基于此我可以找到第一天和最后一天。 要查找一个月内的天数,我们可以使用Fist Rule。 仅在2月份,我们必须检查闰年
31个月 (月份序号> 7)?(月份序号+ 1)%2 :(月份序号)%2。 如果上述等式的结果为真,那么它是31天月,否则是30天月。 仅对于seqno 2月(2月),我们必须考虑闰年计算。