最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java計(jì)算指定日期為本年第幾周的實(shí)例

 更新時(shí)間:2025年11月05日 10:07:04   作者:品種  
本文介紹了在編程中按周統(tǒng)計(jì)數(shù)據(jù)時(shí)遇到的問(wèn)題,由于mysql中按所在月的周數(shù)周統(tǒng)計(jì)比較麻煩,采用所在年的周數(shù)作為分組條件,并通過(guò)java計(jì)算日期屬于年的第一周來(lái)進(jìn)行二次計(jì)算,提高性能,同時(shí),作者也分享了計(jì)算指定日期為本年第幾周的方法,并指出了一些常見(jiàn)方法的缺陷

編程中經(jīng)常遇到日期計(jì)算,由于項(xiàng)目中使用到按周統(tǒng)計(jì)數(shù)據(jù),但是mysql中按所在月的周數(shù)周統(tǒng)計(jì)比較麻煩,于是采用所在年的周數(shù)作為分組條件,再通過(guò)java計(jì)算日期屬于年的第一周來(lái)進(jìn)行二次計(jì)算,提高性能。

找了下計(jì)算指定日期為本年第幾周的方法,發(fā)現(xiàn)沒(méi)有現(xiàn)成的API,但網(wǎng)上給出的方法大部分都有個(gè)缺陷:

若12月31日是 周最后一天有的以周一為每周的第一天,有的以周日為周的第一天),則計(jì)算正常,否則所在周會(huì)被計(jì)算為下一年的第一周,于是做此記錄。

java8及以上版本可以采用LocalDate/LocalDateTime

/** 獲取當(dāng)年的第幾周,返回值范圍為1-53 */
public static int getWeekOfYear(LocalDate date) {
    TemporalField field = WeekFields.of(Locale.getDefault()).weekOfWeekBasedYear();
    int week = date.get(field);
    // 12-31會(huì)被計(jì)算為下一年的第1周,所以需要特殊處理
    if (week == 1 && getLocalDate().getMonth() == Month.DECEMBER) {
        return LocalDate.of(date.getYear(), 12,31)// 直接使用指定日期的12月31日作為錨點(diǎn)
        .addDays(-7)// 往上推一周,一定是本年倒數(shù)第二周
        .getLocalDate().get(field) + 1;
    }
    return week;
}

java8以下版本使用Calendar

public static int getWeekOfYear(Date date) {
    Calendar calendar = Calendar.getInstance(Locale.getDefault());
    calendar.setTime(date);
    calendar.setFirstDayOfWeek(Calendar.SUNDAY); // 設(shè)置每周的第一天為星期日
    int week = calendar.get(Calendar.WEEK_OF_YEAR);
    if (week == 1 && calendar.get(Calendar.MONTH) == Calendar.DECEMBER) {
        calendar.add(Calendar.DAY_OF_MONTH, -7);
        return calendar.get(Calendar.WEEK_OF_YEAR) + 1;
    }
    return week;
}

以周日為每周第一天為例,運(yùn)行結(jié)果如下

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 指定微信好友自動(dòng)發(fā)送消息的實(shí)現(xiàn)示例

    Java 指定微信好友自動(dòng)發(fā)送消息的實(shí)現(xiàn)示例

    這篇文章主要介紹了Java 指定微信好友自動(dòng)發(fā)送消息的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • SpringBoot控制臺(tái)秒變炫彩特效的實(shí)現(xiàn)指南

    SpringBoot控制臺(tái)秒變炫彩特效的實(shí)現(xiàn)指南

    本文介紹如何自定義SpringBoot啟動(dòng)橫幅,通過(guò)banner.txt文件設(shè)置ASCII圖案、版本號(hào)等,并使用ANSI顏色增強(qiáng)效果,還提供關(guān)閉默認(rèn)Banner、添加啟動(dòng)信息及彩色提示的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2025-10-10
  • SpringBoot中統(tǒng)計(jì)方法耗時(shí)的七種實(shí)現(xiàn)方式小結(jié)

    SpringBoot中統(tǒng)計(jì)方法耗時(shí)的七種實(shí)現(xiàn)方式小結(jié)

    作為開(kāi)發(fā)者,我們經(jīng)常需要統(tǒng)計(jì)方法的執(zhí)行時(shí)間,以便找出性能瓶頸,優(yōu)化系統(tǒng)響應(yīng)速度,今天分享在SpringBoot框架中實(shí)現(xiàn)方法耗時(shí)統(tǒng)計(jì)的幾種方法,大家可以根據(jù)需求自行選擇
    2025-03-03
  • Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列的簡(jiǎn)單定義與使用方法

    Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列的簡(jiǎn)單定義與使用方法

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列的簡(jiǎn)單定義與使用方法,簡(jiǎn)單描述了隊(duì)列的功能、特點(diǎn),并結(jié)合java實(shí)例形式分析了隊(duì)列的簡(jiǎn)單定義與使用方法,需要的朋友可以參考下
    2017-10-10
  • 教你用JAVA寫(xiě)文本編輯器(三)

    教你用JAVA寫(xiě)文本編輯器(三)

    這篇文章主要給大家介紹了關(guān)于用JAVA寫(xiě)文本編輯器的相關(guān)資料,本文主要實(shí)現(xiàn)的是一個(gè)點(diǎn)擊選擇文本格式的窗口,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-11-11
  • Java全面細(xì)致講解==和equals的使用

    Java全面細(xì)致講解==和equals的使用

    這篇文章主要介紹了Java中==和equals()的區(qū)別,,==可以使用在基本數(shù)據(jù)類型變量和引用數(shù)據(jù)類型變量中,equals()是方法,只能用于引用數(shù)據(jù)類型,需要的朋友可以參考下
    2022-05-05
  • Java 并發(fā)編程學(xué)習(xí)筆記之核心理論基礎(chǔ)

    Java 并發(fā)編程學(xué)習(xí)筆記之核心理論基礎(chǔ)

    編寫(xiě)優(yōu)質(zhì)的并發(fā)代碼是一件難度極高的事情。Java語(yǔ)言從第一版本開(kāi)始內(nèi)置了對(duì)多線程的支持,這一點(diǎn)在當(dāng)年是非常了不起的,但是當(dāng)我們對(duì)并發(fā)編程有了更深刻的認(rèn)識(shí)和更多的實(shí)踐后,實(shí)現(xiàn)并發(fā)編程就有了更多的方案和更好的選擇。本文是對(duì)并發(fā)編程的核心理論做了下小結(jié)
    2016-05-05
  • Spring boot通過(guò)切面,實(shí)現(xiàn)超靈活的注解式數(shù)據(jù)校驗(yàn)過(guò)程

    Spring boot通過(guò)切面,實(shí)現(xiàn)超靈活的注解式數(shù)據(jù)校驗(yàn)過(guò)程

    這篇文章主要介紹了Spring boot通過(guò)切面,實(shí)現(xiàn)超靈活的注解式數(shù)據(jù)校驗(yàn)過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • springboot切換使用undertow容器的方式

    springboot切換使用undertow容器的方式

    最近稍微有點(diǎn)空閑,回頭再來(lái)優(yōu)化下基礎(chǔ)框架,也是一種重新學(xué)習(xí)。今天主要寫(xiě)寫(xiě)跟大家分享下springboot使用undertow,廢話不多說(shuō)
    2022-07-07
  • MyBatis入門(mén)程序

    MyBatis入門(mén)程序

    MyBatis是支持普通SQL查詢,存儲(chǔ)過(guò)程和高級(jí)映射的優(yōu)秀持久層框架。接下來(lái)本文給大家?guī)?lái)了MyBatis入門(mén)程序,感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08

最新評(píng)論

东乡族自治县| 民权县| 游戏| 刚察县| 静乐县| 许昌市| 新绛县| 潜山县| 德钦县| 吉安县| 洪洞县| 汽车| 黄龙县| 长乐市| 柯坪县| 临邑县| 红原县| 长汀县| 北碚区| 车致| 保亭| 林甸县| 盐城市| 五华县| 鄂州市| 江永县| 和顺县| 克东县| 屯门区| 临泽县| 进贤县| 宁国市| 交城县| 五华县| 隆化县| 德化县| 泰兴市| 甘谷县| 元氏县| 手游| 涞源县|