给你2个方案:
方案1:
1、最简单的,就是定义一个数组,数组中[31,28,31,30]
2、然后取第几个月,直接通过月份的数字减去1做为下标来取上面的数组的数据就可以
3、2月份是特殊,所以如果取到2月份,加一个闰年判断
方案2:直接给你上代码吧,通过下面两个方法,你可以取到一个月的最后一天了,再把这天的日期格式化取最后2个数字出来,就是天数了
/
得到当前月的最后一天
@return
/
public static Date getLastDayOfMonth(Date date) {
Calendar c = new GregorianCalendar();
csetTime(date);
cset(CalendarDAY_OF_MONTH, cgetActualMaximum(CalendarDAY_OF_MONTH));
return toDate(cgetTime(),"yyyy-MM-dd");
}
/
add by chenxiaoping
@字符串转日期
@param strDate
字符串的日期
@return Date 日期
/
public static Date toDate(Date date, String strFormat) {
Date retDate = null;
SimpleDateFormat sdf = new SimpleDateFormat(strFormat);
try {
String str = sdfformat(date);
retDate = sdfparse(str);
} catch (ParseException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
return retDate;
}
select curdate()-2;
select curdate()+2;
如果格式上想要‘YYYY-MM-DD’
可以使用
select adddate(curdate(), '-2 days');
select adddate(curdate(), '+2 days');
select curdate() + INTERVAL -2 DAY ;
select curdate() + INTERVAL 2 DAY ;
迟来的答案
1周末版本(不含节假日判断)
注意:最下面是使用的 递归算法
/获得收益时间(获取当前天+1天,周末不算)
@param date
任意日期
@return the income date
@throws NullPointerException
if null == date
/
private Date getIncomeDate(Date date) throws NullPointerException{
if (null == date){
throw new NullPointerException("the date is null or empty!");
}
//对日期的 *** 作,我们需要使用 Calendar 对象
Calendar calendar = new GregorianCalendar();
calendarsetTime(date);
//+1天
calendaradd(CalendarDAY_OF_MONTH, +1);
//判断是星期几
int dayOfWeek = calendarget(CalendarDAY_OF_WEEK);
Date incomeDate = calendargetTime();
if (dayOfWeek == 1 || dayOfWeek == 7){
//递归
return getIncomeDate(incomeDate);
}
return incomeDate;
}
测试方法:
@Testpublic void testGetIncomeDate() throws ParseException{
String pattern = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Systemoutprintln(simpleDateFormatformat(getIncomeDate(new Date())));
Systemoutprintln(simpleDateFormatformat(getIncomeDate(simpleDateFormatparse("2014-07-31 13:33:05"))));
Systemoutprintln(simpleDateFormatformat(getIncomeDate(simpleDateFormatparse("2014-08-01 13:33:05"))));
Systemoutprintln(simpleDateFormatformat(getIncomeDate(simpleDateFormatparse("2014-08-02 13:33:05"))));
Systemoutprintln(simpleDateFormatformat(getIncomeDate(simpleDateFormatparse("2014-08-03 13:33:05"))));
}
输出结果:
2014-08-01 13:48:092014-08-01 13:33:05
2014-08-04 13:33:05
2014-08-04 13:33:05
2014-08-04 13:33:05
注意:返回的是 时间+1的时间,精度是到毫秒 纳秒,如果有特殊需求,需要自己再处理下
2周末+节假日版本
/获得收益时间(获取当前天+1天,周末不算)
@param date
任意日期
@return the income date
@throws NullPointerException
if null == date
/
private Date getIncomeDate(Date date) throws NullPointerException{
if (null == date){
throw new NullPointerException("the date is null or empty!");
}
//对日期的 *** 作,我们需要使用 Calendar 对象
Calendar calendar = new GregorianCalendar();
calendarsetTime(date);
//+1天
calendaradd(CalendarDAY_OF_MONTH, +1);
Date incomeDate = calendargetTime();
if (isWeekend(calendar) || isHoliday(calendar)){
//递归
return getIncomeDate(incomeDate);
}
return incomeDate;
}
/
判断一个日历是不是周末
@param calendar
the calendar
@return true, if checks if is weekend
/
private boolean isWeekend(Calendar calendar){
//判断是星期几
int dayOfWeek = calendarget(CalendarDAY_OF_WEEK);
if (dayOfWeek == 1 || dayOfWeek == 7){
return true;
}
return false;
}
/
一个日历是不是节假日
@param calendar
the calendar
@return true, if checks if is holiday
/
private boolean isHoliday(Calendar calendar){
String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String dateString = simpleDateFormatformat(calendargetTime());
//节假日 这个可能不同地区,不同年份 都有可能不一样,所以需要有个地方配置, 可以放数据库, 配置文件,环境变量 等等地方
//这里以配置文件 为例子
ResourceBundle resourceBundle = ResourceBundlegetBundle("holidayConfig");
String holidays = resourceBundlegetString("holiday");
String[] holidayArray = holidayssplit(",");
boolean isHoliday = orgapachecommonslangArrayUtilscontains(holidayArray, dateString);
return isHoliday;
}
配置文件:
holiday=2014-10-01,2014-10-02,2014-10-03,2014-10-04,2014-10-05,2014-10-06,2014-10-07测试方法 :
/Testenclosing_type
@throws ParseException
the parse exception
/
@Test
public void testGetIncomeDate() throws ParseException{
String pattern = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Systemoutprintln(simpleDateFormatformat(getIncomeDate(new Date())));
Systemoutprintln(simpleDateFormatformat(getIncomeDate(simpleDateFormatparse("2014-07-31 13:33:05"))));
Systemoutprintln(simpleDateFormatformat(getIncomeDate(simpleDateFormatparse("2014-08-01 13:33:05"))));
Systemoutprintln(simpleDateFormatformat(getIncomeDate(simpleDateFormatparse("2014-08-02 13:33:05"))));
Systemoutprintln(simpleDateFormatformat(getIncomeDate(simpleDateFormatparse("2014-08-03 13:33:05"))));
Systemoutprintln(simpleDateFormatformat(getIncomeDate(simpleDateFormatparse("2014-09-30 13:33:05"))));
Systemoutprintln(simpleDateFormatformat(getIncomeDate(simpleDateFormatparse("2014-10-02 13:33:05"))));
}
结果:
2014-08-01 15:14:592014-08-01 13:33:05
2014-08-04 13:33:05
2014-08-04 13:33:05
2014-08-04 13:33:05
2014-10-08 13:33:05
2014-10-08 13:33:05
从数据库取出来的date类型
比如:现在是2004-03-26 13:31:40
过去是:2004-01-02 11:30:24
我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒
方法一:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try
{
Date d1 = dfparse("2004-03-26 13:31:40");
Date d2 = dfparse("2004-01-02 11:30:24");
long diff = d1getTime() - d2getTime();
long days = diff / (1000 60 60 24);
}
catch (Exception e)
{
}
方法二:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
javautilDate now = dfparse("2004-03-26 13:31:40");
javautilDate date=dfparse("2004-01-02 11:30:24");
long l=nowgetTime()-dategetTime();
long day=l/(2460601000);
long hour=(l/(60601000)-day24);
long min=((l/(601000))-day2460-hour60);
long s=(l/1000-day246060-hour6060-min60);
Systemoutprintln(""+day+"天"+hour+"小时"+min+"分"+s+"秒");
方法三:
SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
javautilDate begin=dfsparse("2004-01-02 11:30:24");
javautilDate end = dfsparse("2004-03-26 13:31:40");
long between=(endgetTime()-begingetTime())/1000;//除以1000是为了转换成秒
long day1=between/(243600);
long hour1=between%(243600)/3600;
long minute1=between%3600/60;
long second1=between%60/60;
Systemoutprintln(""+day1+"天"+hour1+"小时"+minute1+"分"+second1+"秒");
====================================================
java 比较时间大小
String s1="2008-01-25 09:12:09";
String s2="2008-01-29 09:12:11";
javatextDateFormat df=new javatextSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
javautilCalendar c1=javautilCalendargetInstance();
javautilCalendar c2=javautilCalendargetInstance();
try
{
c1setTime(dfparse(s1));
c2setTime(dfparse(s2));
}catch(javatextParseException e){
Systemerrprintln("格式不正确");
}
int result=c1compareTo(c2);
if(result==0)
Systemoutprintln("c1相等c2");
else if(result<0)
Systemoutprintln("c1小于c2");
else
以上就是关于一个简单问题,Java里,如何得到一个月有多少天全部的内容,包括:一个简单问题,Java里,如何得到一个月有多少天、mysql如何取当前时间的前2天和后2天、用java 进行日期计算,获取当前天+1天,周末节假日不算,在线等待中,十万火急……等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)