Java Caledar類(日歷類)如何判斷本周周數(shù)
Java Caledar類判斷本周周數(shù)
思路
- 首先創(chuàng)建SimpleDateFormat將時(shí)間格式化
- 創(chuàng)建Calendar類,因?yàn)槭浅橄箢悾圆荒苡胣ew方法,而是使用getInstance。
- 外國人認(rèn)為每周的第一天是周日,中國人認(rèn)為每周的第一天是周一。所以要先調(diào)用setFirstDayOfWeek方法將周一設(shè)置為每周的第一天
- 首先獲取本地時(shí)間計(jì)算當(dāng)前周數(shù):使用Calendar 類中的WEEK_OF_YEAR
- 獲取目標(biāo)日期計(jì)算周數(shù)
- 得到的周數(shù)是int類型,所以進(jìn)行數(shù)值比較
解決問題
- 打印本周賬單、判斷活動(dòng)的期限等。
- 獲取當(dāng)前周數(shù)后,可以遍歷存放日期數(shù)組那些天是當(dāng)前周
實(shí)現(xiàn)
public static void main(String[] args) throws Exception{
//格式化時(shí)間
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
//新建日歷類
Calendar c=Calendar.getInstance();
//設(shè)置周一為第一天
c.setFirstDayOfWeek(Calendar.MONDAY);
//新建格式化今天的String類日期
String todayStr=sdf.format(new Date());
//轉(zhuǎn)為Date類型
Date today=sdf.parse(todayStr);
//設(shè)置日歷時(shí)間
c.setTime(today);
//獲取當(dāng)前周數(shù)
int currentWeekNum=c.get(Calendar.WEEK_OF_YEAR);
System.out.println(currentWeekNum);
//要查詢的日期
String str="2022-3-28";
Date date=sdf.parse(str);
c.setTime(date);
//查詢?nèi)掌诘闹軘?shù)
int selWeekNum=c.get(Calendar.WEEK_OF_YEAR);
System.out.println(selWeekNum);
if(currentWeekNum==selWeekNum){
System.out.println(str+"是當(dāng)前周的日期");
}else{
System.out.println(str+"不是當(dāng)前周的日期");
}
}
Calendar關(guān)于周的用法
創(chuàng)建對象
Calendar calendar = Calendar.getInstance();
獲取指定年份中有多少周
Calendar calendar = Calendar.getInstance();
傳入?yún)?shù),年份,例如:2023
calendar.set(Calendar.YEAR, 2023);
獲得周數(shù)
int week = calendar.getWeeksInWeekYear();
如果需要指定一周的開始時(shí)間可以 用函數(shù)
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
獲取指定周,指定年份,返回月份以及日期
```java
>//創(chuàng)建對象
>Calendar calendar = Calendar.getInstance();
>// 設(shè)置年份
>calendar.set(Calendar.YEAR,2023);
>// 設(shè)置,比如 獲取周一的日期
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
// 一年中的第幾周
calendar.set(Calendar.WEEK_OF_YEAR,36);
// 獲得月份。需要+1.因?yàn)樵路菔菑?開始的
int i = calendar.get((Calendar.MONTH))+1;
System.out.println(i);
// 獲得那一周,周一的日期
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));后續(xù)問題: 關(guān)于 如果1月1號為非星期一,那么定義這周為上一年的最后一周。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java?Springboot對接開發(fā)微信支付詳細(xì)流程
最近要做一個(gè)微信小程序,需要微信支付,所以研究了下怎么在java上集成微信支付功能,下面這篇文章主要給大家介紹了關(guān)于java?Springboot對接開發(fā)微信支付的相關(guān)資料,需要的朋友可以參考下2024-08-08
Java解決線程的不安全問題之volatile關(guān)鍵字詳解
這篇文章主要介紹了Java解決線程的不安全問題之volatile關(guān)鍵字詳解,可見性指一個(gè)線程對共享變量值的修改,能夠及時(shí)地被其他線程看到,而 volatile 關(guān)鍵字就保證內(nèi)存的可見性,需要的朋友可以參考下2023-08-08
Spring AOP如何自定義注解實(shí)現(xiàn)審計(jì)或日志記錄(完整代碼)
這篇文章主要介紹了Spring AOP如何自定義注解實(shí)現(xiàn)審計(jì)或日志記錄(完整代碼),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
RabbitMQ實(shí)現(xiàn)消費(fèi)端限流的步驟
消費(fèi)者端限流的主要目的是控制消費(fèi)者每次從 RabbitMQ 中獲取的消息數(shù)量,從而實(shí)現(xiàn)消息處理的流量控制,這篇文章主要介紹了RabbitMQ如何實(shí)現(xiàn)消費(fèi)端限流,需要的朋友可以參考下2024-03-03
java中Memcached的使用實(shí)例(包括與Spring整合)
這篇文章主要介紹了java中Memcached的使用實(shí)例(包括與Spring整合),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
SpringBoot 利用RestTemplate http測試
這篇文章主要介紹了SpringBoot 利用RestTemplate http測試,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08

