java计算工龄
计算工龄原则:若是2000-10-12作为开始工作时间,则到下一年的2001-10-13算为一年。有个bug,不满一年的工龄是错误的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import java.util.Date; import java.util.Calendar; public int workAge(Date nowTime, Date workTime){ int year = 0 ; //当前时间的年月日 Calendar cal = Calendar.getInstance(); cal.setTime(nowTime); int nowYear = cal.get(Calendar.YEAR); int nowMonth = cal.get(Calendar.MONTH); int nowDay = cal.get(Calendar.DAY_OF_MONTH); //开始工作时间的年月日 cal.setTime(workTime); int workYear = cal.get(Calendar.YEAR); int workMonth = cal.get(Calendar.MONTH); int workDay = cal.get(Calendar.DAY_OF_MONTH); //得到工龄 year = nowYear - workYear; //得到年差 //若目前月数少于开始工作时间的月数,年差-1 if (nowMonth < workMonth){ year = year - 1 ; } else if (nowMonth == workMonth){ //当月数相等时,判断日数,若当月的日数小于开始工作时间的日数,年差-1 if (nowDay < workDay){ year = year - 1 ; } } return year; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | /** * 计算工龄 * @param begin "yyyy-MM-dd" * @return double * @throws ParseException */ public static double workYears(String begin) { Calendar dayEnd = Calendar.getInstance(); Calendar dayBegin = Calendar.getInstance(); try { dayBegin.setTime( new SimpleDateFormat( "yyyy-MM-dd" ).parse(begin)); } catch (ParseException e) { e.printStackTrace(); } //初始计算 double result= dayEnd.get(Calendar.MONTH) +dayEnd.get(Calendar.YEAR)* 12 -dayBegin.get(Calendar.MONTH) - dayBegin.get(Calendar.YEAR)* 12 ; //BigDecimal.ROUND_HALF_UP表示四舍五入,BigDecimal.ROUND_HALF_DOWN也是五舍六入,BigDecimal.ROUND_UP表示进位处理(就是直接加1),BigDecimal.ROUND_DOWN表示直接去掉尾数。 return new BigDecimal(result/ 12 ).setScale( 2 , BigDecimal.ROUND_HALF_UP).doubleValue(); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结