一个简单问题,Java里,如何得到一个月有多少天

一个简单问题,Java里,如何得到一个月有多少天,第1张

给你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;

}

测试方法:

@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"))));

}

输出结果:

2014-08-01 13:48:09

2014-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:59

2014-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天,周末节假日不算,在线等待中,十万火急……等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9762387.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存