如何获取上上个季度最后一天日期?

snowwolf1015 2012-06-11 11:26:09
如上,谁有类似的代码,请教下
...全文
1389 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangtian549 2012-07-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
上上个季度最后一天日期,月和日就是固定的4种值,因此

Java code


/**
* 取得上上季度最后一天日期
* @param date 日期
* @return
*/
public String getLastDay(Date date){
//取得日历
Calendar ca……
[/Quote] 代码有bug, 在java中,月份是从0开始的, 所以
int mouth = calendar.get(Calendar.MONTH) + 1;// 上上季度的月份
虎翼 2012-06-12
  • 打赏
  • 举报
回复
上上个季度最后一天日期,月和日就是固定的4种值,因此

/**
* 取得上上季度最后一天日期
* @param date 日期
* @return
*/
public String getLastDay(Date date){
//取得日历
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

// 日历减6个月,即上上季度
calendar.add(Calendar.MONTH,-6);

int year = calendar.get(Calendar.YEAR);// 上上季度的年份
int mouth = calendar.get(Calendar.MONTH);// 上上季度的月份
String mmdd = "";// 月/日
// 根据月份,判断是哪个季度
switch( mouth){
case 1:
case 2:
case 3:
mmdd = "3/31"; // 第一季度最后一天是3/31
break;
case 4:
case 5:
case 6:
mmdd = "6/30"; // 第二季度最后一天是6/30
break;
case 7:
case 8:
case 9:
mmdd = "9/30";// 第三季度最后一天是9/30
break;
case 10:
case 11:
case 12:
mmdd = "12/31";// 第四季度最后一天是12/31
break;
}

String lastDate = String.valueOf(year) + "/" + mmdd;
System.out.println(lastDate);
return lastDate;
}

huage 2012-06-11
  • 打赏
  • 举报
回复

Date date = new Date(System.currentTimeMillis()) ;
int month = date.getMonth() ;
if(0<=month&& month<=2){
System.out.println("09月30日");
}
if(3<=month&& month<=5){
System.out.println("12月31日");
}
if(6<=month&& month<=8){
System.out.println("03月31日");
}if(9<=month&& month<=11){
System.out.println("06月30日");
}
  • 打赏
  • 举报
回复
如果是ORACLE就好办了,直接减天数,你算好天数就行
select sysdate,add_months(sysdate,-12) from dual; --减1年
select sysdate,add_months(sysdate,-1) from dual; --减1月
select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual;
--减1星期
select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual;
--减1天
select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from
dual; --减1小时
select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from
dual; --减1分钟
select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS')
from dual; --减1秒
curbstone119 2012-06-11
  • 打赏
  • 举报
回复
同意huage1998
思路要开阔一些,事情没那么复杂

另外,huage1998好像没有考虑年的部分
snowwolf1015 2012-06-11
  • 打赏
  • 举报
回复
写出来了一个,要的是这样的效果

String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar lastDate = Calendar.getInstance();
int month = (lastDate.get(Calendar.MONTH)) + 1;
if(month==1||month==4||month==7||month==10) {
lastDate.add(Calendar.MONTH, -4);//日期减4个月
lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
lastDate.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天
str = sdf.format(lastDate.getTime());
System.out.println(str);
}else if(month==2||month==5||month==8||month==11) {
lastDate.add(Calendar.MONTH, -5);// 日期减5个月
lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
lastDate.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天
str = sdf.format(lastDate.getTime());
System.out.println(str);
}else {
lastDate.add(Calendar.MONTH, -6);//日期减6个月
lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
lastDate.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天
str = sdf.format(lastDate.getTime());
System.out.println(str);
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧