如何找到前 2 年一个月中的第一个和最后一个日期。例如,今天是 07-01-2012(mm-dd-yyyy);我想查找 2011 年 ... 01-01-2011 01-31-2011 02-01-2011 02-28-2011 的数据。类似的东西谢谢。
问问题
1044 次
6 回答
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));
}
}
于 2012-07-11T10:29:58.233 回答
1
select LAST_DAY('2011-01-01') from dual;
于 2012-07-11T10:24:27.183 回答
0
PHP 的函数date('t')
可以返回一个月的天数:
echo date('t', mktime(1, 1, 1, 2, 1, 1970));
// outputs 28
其次,这个月的第一天永远是1
于 2012-07-11T10:25:02.690 回答
0
我的算法是找出当月的天数。基于此,我可以找到第一天和最后一天。要查找一个月中的天数,我们可以使用拳头法则。仅在 2 月份,我们必须检查闰年
31 天月 (month seq no > 7 ) ?(month seq no + 1)%2 : (month seq no) % 2. 如果上述等式的结果为真,则为 31 天月,否则为 30 天月。仅对于月份 seqno 2(2 月),我们必须考虑闰年计算。
于 2012-07-11T10:56:32.313 回答
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 年的所有月份开始和结束日期。最后日期将是当天!
于 2012-07-11T10:49:42.717 回答
0
Try this
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'
于 2012-07-11T10:35:15.047 回答