当前位置: 首页 > news >正文

ISO 周计算 记录

java不太熟悉但.需要java版的.一开始写的是javascript.此处只记录个思路

 1 import java.time.LocalDate;
 2 import java.time.temporal.ChronoUnit;
 3 import java.time.temporal.WeekFields; 
 4 
 5 public class tmain {
 6     public static void main(String[] args) {
 7 
 8        getTest();
 9     }
10   static WeekFields weekFields = WeekFields.ISO;
11 
12    private static void getTest() {
13 
14       class WeekOfYearModel {
15 
16         public int baseYear;
17         public int weekNum;
18 
19         public WeekOfYearModel(int byear, int wkn) {
20           this.baseYear = byear;
21           this.weekNum = wkn;
22         }
23 
24         public long subtract(WeekOfYearModel wk) {
25           long re ;
26           if (this.baseYear == wk.baseYear) {
27             re = this.weekNum - wk.weekNum;
28           } else {
29             long max ,min;
30             LocalDate sDate, eDate;
31             int xs = 1;
32             if (this.baseYear > wk.baseYear) {
33               sDate = getFirstDayOfFirstWeekByYear(wk.baseYear);
34               eDate = getFirstDayOfFirstWeekByYear(wk.baseYear + 1).plusDays(-1);
35               max = this.weekNum;
36               min=wk.weekNum;
37             } else {
38               sDate = getFirstDayOfFirstWeekByYear(this.baseYear);
39               eDate = getFirstDayOfFirstWeekByYear(this.baseYear + 1).plusDays(-1);
40               max = wk.weekNum;
41               min=this.weekNum;
42               xs = -1;
43             }
44            // max +=Math.ceilDiv(ChronoUnit.DAYS.between(sDate, eDate), 7) ;
45            max +=(ChronoUnit.DAYS.between(sDate, eDate)+7-1)/7 ; 
46            re = (max - min) * xs;
47           }
48           return re;
49         }
50 
51       }
52   
53       WeekOfYearModel sdate=new WeekOfYearModel(2025,2);
54       WeekOfYearModel edate = new WeekOfYearModel(2024, 52);
55       //计算两周相差周数
56       long d= sdate.subtract(edate);
57       System.out.print(d);
58     }
59     public static LocalDate getFirstDayOfFirstWeekByYear(int year) {
60         int cYear = year;
61         LocalDate theWeekFirstDayOfCurrentYear;
62         LocalDate firstDayOfYear = LocalDate.of(cYear, 1, 1) ;
63         int weekDayOffirstDay = firstDayOfYear.get(weekFields.dayOfWeek());
64         if (weekDayOffirstDay > 4) {          
65             //1号是去年最后一周下周一是今年第一周的第一天
66             theWeekFirstDayOfCurrentYear = firstDayOfYear.plusDays((7 - weekDayOffirstDay) + 1);
67         } else if (weekDayOffirstDay > 1) {
68             theWeekFirstDayOfCurrentYear =firstDayOfYear.plusDays((weekDayOffirstDay-1)*-1);
69         } else {
70             theWeekFirstDayOfCurrentYear = firstDayOfYear;
71         }
72         return theWeekFirstDayOfCurrentYear;
73     }
74     public static int getWeekOfYear(LocalDate data) {      
75       return data.get(weekFields.weekOfWeekBasedYear());
76     }
77 }

 

http://www.hskmm.com/?act=detail&tid=20855

相关文章:

  • 从 “被动耗能” 到 “主动优化”:MyEMS 开启商业建筑能源管理 “新范式”
  • 【故障排查】视频汇聚EasyCVR接入设备通道数为0?通道编码长度不规范导致
  • 来信小程序管理系统:匿名信息传递与社交互动平台
  • PCIe加速卡设计资料:416-基于Kintex Ultrasacle的万兆网络光纤 PCIe加速卡
  • 多生产者,多消费者
  • GEO优化实战指南:一周内让豆包、Deepseek、Kimi等推荐了我的插件
  • 房产楼盘小程序管理系统:助力房产营销数字化升级的优质解决方案
  • 高速信号处理设计方案:413-基于双XCVU9P+C6678的100G光纤加速卡
  • Teamcenter:结构管理器查询(又称:BOM结构查询)
  • 2025年最好用的同步云盘是哪个?一个老用户的真实体验分享
  • 使用 ShedLock 实现多实例定时任务单执行的常见错误及解决办法
  • 1_二分查找
  • AI元人文:悟空博弈专用芯片
  • 【ACM出版】第五届管理科学和软件工程国际学术会议(ICMSSE 2025)
  • PiXYZ Studio 2021下载地址与安装教程
  • coremail日常操作
  • Win 10 LSTC 使用 Podman - tfel
  • 一生一芯学习:程序,运行时环境与AM(一)
  • 如何用Java25编译Java17的项目
  • [MCP] MCP Resources
  • 【ACM出版】2025年第二届人工智能与未来教育国际学术会议(AIFE 2025)
  • HL工作日志
  • Halcon基础——图像增强
  • HTML 开发工具有哪些?常用 HTML 开发工具推荐、学习路线与实战经验分享
  • PS 商业级人像修图插件:Infinite Retouch V1.0.3 全面指南
  • NVIDIA 开源 Audio2Face:音频生成逼真面部动画;Gemini Live API 支持思考能力 丨日报
  • 深入解析:4、urbane-commerce 认证请求 DTO 设计规范
  • mp4/图片转gif
  • 详细介绍:09.【Linux系统编程】“文件“读写操作,Linux下一切皆文件!
  • 数据类型-元组