java 给月份3月和该月1日是星期二,求该月最后一个工作日的日期 如何实现

java 给月份3月和该月1日是星期二,求该月最后一个工作日的日期 如何实现,第1张

我的思路是这样的,根据你提供的信息可以知道3月1日是星期二,3月份有31天,那么就有4个星期零三天,可以算出4个星期后3月29日为星期二,那么3月30日就为星期三,3月31日为星期四,程序中有根据日期算星期的方法,判断3月31日是否为工作日及即可。

思路:首先是获取该月的实际天数,然后从1号遍历直至该月最后一天,利用Calendar类找出该日是一周中的第几天,

(1)若该日是周日,则视为一周结束,并用该日期减去6找到该周的开始日期,若相减结果小于等于1,则说明该周起始日期应该是本月1号。

(1)若该日不是周日,且是该月最后一天,则应该在上面计算的基础上再加一周,视月末为该周的结束日,该周起始日期应为改日期减去改日

在一周中的位置加2,例如:2013-09-30号是周一,则视为9月份中的第六周,开始日期是30-2+2

提示:Calendar 类中视周日为一周的开始,值是1

示例代码:

[java] view plain copy

public static void printfWeeks(String date) throws Exception {

// String date = "2013-09";

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM");

Date date1 = dateFormatparse(date);

Calendar calendar = new GregorianCalendar();

calendarsetTime(date1);

int days = calendargetActualMaximum(CalendarDAY_OF_MONTH);

Systemoutprintln("days:" + days);

int count = 0;

for (int i = 1; i <= days; i++) {

DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");

Date date2 = dateFormat1parse(date + "-" + i);

calendarclear();

calendarsetTime(date2);

int k = new Integer(calendarget(CalendarDAY_OF_WEEK));

if (k == 1) {// 若当天是周日

count++;

Systemoutprintln("-----------------------------------");

Systemoutprintln("第" + count + "周");

if (i - 6 <= 1) {

Systemoutprintln("本周开始日期:" + date + "-" + 1);

} else {

Systemoutprintln("本周开始日期:" + date + "-" + (i - 6));

}

Systemoutprintln("本周结束日期:" + date + "-" + i);

Systemoutprintln("-----------------------------------");

}

if (k != 1 && i == days) {// 若是本月最好一天,且不是周日

count++;

Systemoutprintln("-----------------------------------");

Systemoutprintln("第" + count + "周");

Systemoutprintln("本周开始日期:" + date + "-" + (i - k + 2));

Systemoutprintln("本周结束日期:" + date + "-" + i);

Systemoutprintln("-----------------------------------");

}

}

}

测试代码:

[java] view plain copy

public static void main(String[] args) throws Exception {

String s = "2013-";

for (int i = 1; i <= 12; i++) {

Systemoutprintln("");

Systemoutprintln("月份:" + i);

printfWeeks(s + i);

Systemoutprintln("");

}

// printfWeeks(s + 2);

}

1、获取当前的时间

Date date=new Date();//此时date为当前的时间

2、设置时间的格式

Date date=new Date();//此时date为当前的时间

Systemoutprintln(date);

SimpleDateFormat dateFormat=new SimpleDateFormat(“YYYY-MM-dd”);//设置当前时间的格式,为年-月-日

Systemoutprintln(dateFormatformat(date));

SimpleDateFormat dateFormat_min=new SimpleDateFormat(“YYYY-MM-dd HH:mm:ss”);//设置当前时间的格式,为年-月-日 时-分-秒

Systemoutprintln(dateFormat_minformat(date));

扩展资料

java 获取当前微秒时间:

package comffcsitm;

public class DataSecUtils {

public static void main(String[] args) {

Systemoutprintln(SystemcurrentTimeMillis()); // 毫秒

Systemoutprintln(getmicTime());

Systemoutprintln(SystemcurrentTimeMillis()); // 毫秒

Systemoutprintln(getmicTime());

}

/

@return返回微秒

/

public static Long getmicTime() {

Long cutime = SystemcurrentTimeMillis() 1000; // 微秒

Long nanoTime = SystemnanoTime(); // 纳秒

return cutime + (nanoTime - nanoTime / 1000000 1000000) / 1000;

}

}

比如今天是2009年3月24号,

那本月第一天就是: 今天的年 + 月 + 01

本月的最后一天就是:(本月第一天)加1月减1天

明白了?

日期的加减可以用类Calendar实现

本月的开始时间,就是年朋+01

结束时间,简单一点就是下月1号减1天

以上就是关于java 给月份3月和该月1日是星期二,求该月最后一个工作日的日期 如何实现全部的内容,包括:java 给月份3月和该月1日是星期二,求该月最后一个工作日的日期 如何实现、java中如何计算本周开始和结束的日期、java如何得到年月日。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/10155956.html

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

发表评论

登录后才能评论

评论列表(0条)

保存