社区
Java SE
帖子详情
求一思路,高手帮忙看看
bcsky
2004-11-19 02:08:51
现要求一个月的默认日期显示成这样
2004-11-26
2004-12-25
假设这个是一个周期,算一个月
但是如果真实日期过了2004-12-26后,
如何再循环显示成这样
2004-12-26
2005-01-25
关键是真实日期的26-30这几天怎么处理
先谢过了
...全文
119
8
打赏
收藏
求一思路,高手帮忙看看
现要求一个月的默认日期显示成这样 2004-11-26 2004-12-25 假设这个是一个周期,算一个月 但是如果真实日期过了2004-12-26后, 如何再循环显示成这样 2004-12-26 2005-01-25 关键是真实日期的26-30这几天怎么处理 先谢过了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chanceqw
2004-11-19
打赏
举报
回复
public static void main(String[] args) {
/* //test1
TransformerPool tp=TransformerPool.getInstance();
System.out.println(tp.getCapacity());
*/
Date now=new Date();
System.out.println(getStartDateStr(now));
System.out.println(getEndDateStr(now));
}
public static String getStartDateStr(Date d){
int date=d.getDate();
Date tmp;
long l=24*60*60*1000; //一天的毫秒数
if(date<=25){
tmp=new Date(d.getTime()-27*l);
//保证能取到上个月,因为一个月最少天数是28,这里取27
tmp.setDate(26);
}else{
tmp=new Date(d.getTime());
tmp.setDate(26);
}
return getDateStr(tmp);
}
public static String getEndDateStr(Date d){
int date=d.getDate();
Date tmp;
long l=24*60*60*1000; //一天的毫秒数
if(date<=25){
tmp=new Date(d.getTime());
tmp.setDate(25);
}else{
tmp=new Date(d.getTime()+10*l);
//保证取到下个月,所以要取大于(31-26)而小于28的一个数,这里取的10天
tmp.setDate(25);
}
return getDateStr(tmp);
}
private static String getDateStr(Date d){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(d);
}
bcsky
2004-11-19
打赏
举报
回复
谢谢 我先看看
d_selenite
2004-11-19
打赏
举报
回复
没写中文注释,大致补充一下
//将起始时间设为本月的26日第一时间
java.util.Date start=new java.util.Date();
start.setTime(start.getTime()-start.getHours()*60*60*1000-start.getMinutes()*60*1000-start.getSeconds()*1000-start.getTime()%1000);
start.setDate(26);
//将结束时间设为本月25日最后时间
java.util.Date end=new java.util.Date();
end.setTime(end.getTime()-end.getHours()*60*60*1000-end.getMinutes()*60*1000-end.getSeconds()*1000-end.getTime()%1000-1);
end.setDate(25);
//比较当前时间和起始时间,
java.util.Date curTime=new java.util.Date();
if(curTime.before(start))
{
//如果当前时间比起始时间早,就把起始时间往前推一个月
//以下考虑为一月份往前推至前一年的十二月
if(start.getMonth()==0)
{
start.setMonth(11);
start.setYear(start.getYear()-1);
}
else
{
start.setMonth(start.getMonth()-1);
}
}
else
{
//如果当前时间比起始时间晚,就把结束时间往后推一个月
//一年的十二月往后推为次年的一月
if(end.getMonth()==11)
{
end.setMonth(0);
end.setYear(end.getYear()+1);
}
else
{
end.setMonth(end.getMonth()+1);
}
}
//现在就可以用了
System.out.println(start);
System.out.println(end);
d_selenite
2004-11-19
打赏
举报
回复
java.util.Date start=new java.util.Date();
start.setTime(start.getTime()-start.getHours()*60*60*1000-start.getMinutes()*60*1000-start.getSeconds()*1000-start.getTime()%1000);
start.setDate(26);
java.util.Date end=new java.util.Date();
end.setTime(end.getTime()-end.getHours()*60*60*1000-end.getMinutes()*60*1000-end.getSeconds()*1000-end.getTime()%1000-1);
end.setDate(25);
java.util.Date curTime=new java.util.Date();
if(curTime.before(start))
{
if(start.getMonth()==0)
{
start.setMonth(11);
start.setYear(start.getYear()-1);
}
else
{
start.setMonth(start.getMonth()-1);
}
}
else
{
if(end.getMonth()==11)
{
end.setMonth(0);
end.setYear(end.getYear()+1);
}
else
{
end.setMonth(end.getMonth()+1);
}
}
System.out.println(start);
System.out.println(end);
bcsky
2004-11-19
打赏
举报
回复
如果真实日期段是11月1号-11月30号
在1号-25号这个时间段内 要这样显示 开始时间 2004年10月26号 结束时间 2004年11月25号
在26号-30号这个时间段内 开始时间 2004年11月26号 结束时间 2004年12月25号
因为开始时间 和 结束时间 不是默认的一个月的1号到30号 而是26号到下个月的25号
chanceqw
2004-11-19
打赏
举报
回复
你的意思是不是
2004-11-26 至 2004-12-25
2004-12-26 至 2005-01-25
2005-01-26 至 2005-02-25
这样的重复?没明白你想干什么
是不是说你需要每个月的第一天是26号这样的
用Calendar可以做很多日期相关的事情
Calendar rightNow = Calendar.getInstance();
redex
2004-11-19
打赏
举报
回复
if(x<12)
...
else
...
其中,x代表提取出来的月份。
llp1217
2004-11-19
打赏
举报
回复
26-30这几天怎么处理,什么意思?
电梯C++只有类的框架,谁能帮我补全
老师叫写的,不过我们学的少,不会做.盯着电脑看了几天了,还是一点
思路
也没有.请
高手
帮忙
一下,感激不尽.
java的重定向循环,使用Filter后,出现重定向循环有关问题,求
高手
帮忙
看下
使用Filter后,出现重定向循环问题,求
高手
帮忙
看下publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{HttpServletRequestreq=...
matlab解含参数高次方程,用matlab解一个含参数的一元三次方程,
高手
帮忙
看看
这个程序有什么问题,谢谢! - 程序语言 - 小木虫 - 学术 科研 互动社区...
思路
是首先假设一个初始值P_av0, 然后解得P的一组根,取平均值和P_av0比较,如果收敛,则为所求的根,否则把新的平均值代回方程,再求根,直到收敛。程序如下:function P_real=P_distribution(a,b,e...
JVM调优三板斧,快速掌握调优的核心与
思路
这篇文章,就是让你学会调优,掌握一个属于自己的调优节奏与
思路
。 快速了解调优 如果你对调优没有什么概念,那么我们先说说调优是什么。 所谓调优,就是你的系统生病了。此时,我们就是一个诊所。系统找我们来治...
『程序员』 [求职招聘]软件测试面试题,
高手
帮忙
!!
『程序员』 [求职招聘]软件测试面试题,
高手
帮忙
!! 作者:janny161 提交日期:2005-12-8 19:32:18楼主 有100个金币,其中有一个比较轻。给你一个天平,怎样用四次天平确认出哪个金币轻? 作者:ViviHCW 回复...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章