时间计算除了2018-12月正确,为什么全部错误

南橘ryc 2019-01-04 03:46:27
不知道为什么,我看起来挺正确的


package cn.newer2019.j20190104.homework4;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/*
* 任务:发放薪水
* 时间:每个月最后一个星期五
* 如果最后一个星期没有周五,则为倒数第二个星期五
* 计算发工资时间
*/

public class homework4 {

public static void main(String[] args) {
System.out.println("请输入年月:");
Scanner sc =new Scanner(System.in);
String temp =sc.nextLine();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM");
SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd");
try {
Date date =sdf.parse(temp);
Date next =nextSign(date);
System.out.println("工资发放日期为:"+sdf1.format(next));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
public static Date nextSign(Date date) {
Calendar cal =Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(cal.get(Calendar.MONTH)));
int weekday =cal.get(Calendar.DAY_OF_WEEK);
if(weekday<=6) {
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
}else {
cal.add(Calendar.WEEK_OF_MONTH, -1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
}
return cal.getTime();


}

}





...全文
113 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
南橘ryc 2019-01-05
  • 打赏
  • 举报
回复
引用 1 楼 楓VS痕 的回复:

public static Date nextSign(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(cal.get(Calendar.MONTH)));
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));

int weekday = cal.get(Calendar.DAY_OF_WEEK);
// if(weekday<=6) {
if (weekday >= 6) {
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
} else {
cal.add(Calendar.WEEK_OF_MONTH, -1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
}
return cal.getTime();
}


谢谢,原来是这两个地方的问题,感谢感谢
楓VS痕 2019-01-04
  • 打赏
  • 举报
回复

public static Date nextSign(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(cal.get(Calendar.MONTH)));
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));

int weekday = cal.get(Calendar.DAY_OF_WEEK);
// if(weekday<=6) {
if (weekday >= 6) {
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
} else {
cal.add(Calendar.WEEK_OF_MONTH, -1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
}
return cal.getTime();
}

23,404

社区成员

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

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