欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java根據(jù)開(kāi)始時(shí)間和結(jié)束時(shí)間及周幾計(jì)算日期的示例代碼

 更新時(shí)間:2024年06月07日 16:51:45   作者:huanhuan_m1  
在Java 7中,java.time包不存在,所以我們需要使用java.util.Calendar和java.util.Date類來(lái)實(shí)現(xiàn)類似的功能,這篇文章主要介紹了Java根據(jù)開(kāi)始時(shí)間和結(jié)束時(shí)間及周幾計(jì)算出日期的示例代碼,需要的朋友可以參考下

1、在Java 7中,java.time包不存在,所以我們需要使用java.util.Calendar和java.util.Date類來(lái)實(shí)現(xiàn)類似的功能。

以下是一個(gè)基于Java 7的示例代碼:

import java.util.Calendar;
import java.util.Date;
public class DateCalculator {
    public static Date calculateDate(Date startDate, Date endDate, int dayOfWeek) {
        Calendar startCal = Calendar.getInstance();
        startCal.setTime(startDate);
        Calendar endCal = Calendar.getInstance();
        endCal.setTime(endDate);
        // 確保輸入的dayOfWeek在正確的范圍內(nèi)(1-7,其中1代表周一,7代表周日)
        if (dayOfWeek < 1 || dayOfWeek > 7) {
            throw new IllegalArgumentException("Invalid dayOfWeek value. Must be between 1 and 7.");
        }
        // 將輸入的dayOfWeek轉(zhuǎn)換為Calendar的周幾(Calendar.MONDAY, Calendar.SUNDAY等)
        int targetDay = dayOfWeek + 1; // 因?yàn)镃alendar的周日是1,周一到周六依次遞增
        // 查找開(kāi)始日期之后的第一個(gè)目標(biāo)周幾的日期
        while (startCal.getTime().before(endDate)) {
            if (startCal.get(Calendar.DAY_OF_WEEK) == targetDay) {
                break;
            }
            startCal.add(Calendar.DAY_OF_MONTH, 1);
        }
        return startCal.getTime();
    }
    public static void main(String[] args) throws Exception {
        long startDateTimestamp = 1377753600000L; // 開(kāi)始日期的Unix時(shí)間戳,例如2013-09-01 00:00:00
        long endDateTimestamp = 1380345600000L; // 結(jié)束日期的Unix時(shí)間戳,例如2013-10-01 00:00:00
        int targetDayOfWeek = 3; // 周三(在Java中,1=Monday, 7=Sunday)
        Date startDate = new Date(startDateTimestamp);
        Date endDate = new Date(endDateTimestamp);
        Date calculatedDate = calculateDate(startDate, endDate, targetDayOfWeek);
        if (calculatedDate != null) {
            System.out.println("The next occurrence of " + targetDayOfWeek + " (Wednesday) between " 
                              + startDate + " and " + endDate + " is on: " + calculatedDate);
        } else {
            System.out.println("There is no occurrence of the specified weekday between the given dates.");
        }
    }
}

這段代碼首先將開(kāi)始日期和結(jié)束日期轉(zhuǎn)換為Calendar對(duì)象,然后使用循環(huán)尋找開(kāi)始日期之后的第一個(gè)指定周幾的日期。如果找到,就返回這個(gè)日期;否則,返回null。在main方法中,我們使用Unix時(shí)間戳創(chuàng)建了開(kāi)始和結(jié)束日期,并調(diào)用了calculateDate函數(shù)。

2、在Java 8中,根據(jù)開(kāi)始時(shí)間、結(jié)束時(shí)間和周幾來(lái)計(jì)算日期,可以使用java.time包下的類,如LocalDate、DayOfWeek等。

以下是一個(gè)示例代碼,展示了如何實(shí)現(xiàn)這一功能:

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
public class DateCalculator {
    public static LocalDate calculateDate(LocalDate startDate, LocalDate endDate, int dayOfWeek) {
        // 確保輸入的dayOfWeek在正確的范圍內(nèi)(1-7,其中1代表周一,7代表周日)
        if (dayOfWeek < 1 || dayOfWeek > 7) {
            throw new IllegalArgumentException("Invalid dayOfWeek value. Must be between 1 and 7.");
        }
        // 將輸入的dayOfWeek轉(zhuǎn)換為DayOfWeek枚舉值
        DayOfWeek targetDay = DayOfWeek.of(dayOfWeek);
        // 查找開(kāi)始日期之后的第一個(gè)目標(biāo)周幾的日期
        LocalDate firstOccurrence = startDate.with(TemporalAdjusters.nextOrSame(targetDay));
        // 如果第一個(gè)出現(xiàn)的日期在結(jié)束日期之后,則返回null,表示在指定區(qū)間內(nèi)沒(méi)有找到符合條件的日期
        if (firstOccurrence.isAfter(endDate)) {
            return null;
        }
        return firstOccurrence;
    }
    public static void main(String[] args) {
        LocalDate startDate = LocalDate.of(2023, 9, 1); // 開(kāi)始日期
        LocalDate endDate = LocalDate.of(2023, 9, 30); // 結(jié)束日期
        int targetDayOfWeek = 3; // 周三(在Java中,1=Monday, 7=Sunday)
        LocalDate calculatedDate = calculateDate(startDate, endDate, targetDayOfWeek);
        if (calculatedDate != null) {
            System.out.println("The next occurrence of " + targetDayOfWeek + " (Wednesday) between " 
                              + startDate + " and " + endDate + " is on: " + calculatedDate);
        } else {
            System.out.println("There is no occurrence of the specified weekday between the given dates.");
        }
    }
}

這段代碼首先定義了一個(gè)calculateDate方法,它接收開(kāi)始日期、結(jié)束日期以及表示周幾的整數(shù)作為參數(shù)。然后,使用TemporalAdjusters.nextOrSame方法找到開(kāi)始日期之后的第一個(gè)指定周幾的日期。如果這個(gè)日期在結(jié)束日期之后,則返回null。最后,在main方法中調(diào)用此函數(shù),并打印結(jié)果。

請(qǐng)注意,Java的DayOfWeek枚舉中,1代表星期一,2代表星期二,依此類推,直到7代表星期日。因此,如果要查找周日的日期,應(yīng)傳入7。

到此這篇關(guān)于Java根據(jù)開(kāi)始時(shí)間和結(jié)束時(shí)間以及周幾計(jì)算出日期的文章就介紹到這了,更多相關(guān)java根據(jù)周幾計(jì)算出日期內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解原型模式

    Java?設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解原型模式

    原型模式是用于創(chuàng)建重復(fù)的對(duì)象,同時(shí)又能保證性能。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式,今天通過(guò)本文給大家介紹下Java 原型設(shè)計(jì)模式,感興趣的朋友一起看看吧
    2022-04-04
  • SpringCloud的Hystrix簡(jiǎn)單介紹

    SpringCloud的Hystrix簡(jiǎn)單介紹

    這篇文章主要介紹了SpringCloud的Hystrix簡(jiǎn)單介紹,SpringCloud Hystrix是Netflix開(kāi)源的一款容錯(cuò)框架,具備服務(wù)降級(jí),服務(wù)熔斷,依賴隔離,監(jiān)控(Hystrix Dashboard)等功能,同樣具有自我保護(hù)能力,需要的朋友可以參考下
    2023-07-07
  • Springmvc ModelAndView原理及用法詳解

    Springmvc ModelAndView原理及用法詳解

    這篇文章主要介紹了Springmvc ModelAndView原理及用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java中的隨機(jī)數(shù)Random

    Java中的隨機(jī)數(shù)Random

    這篇文章主要介紹了Java中的隨機(jī)數(shù)Random,關(guān)于隨機(jī)數(shù)的介紹不設(shè)置隨機(jī)數(shù)種子,你每次隨機(jī)抽樣得到的數(shù)據(jù)都是不一樣的。設(shè)置了隨機(jī)數(shù)種子,能夠確保每次抽樣的結(jié)果一樣,下面來(lái)了解具體的詳細(xì)內(nèi)容介紹吧
    2022-03-03
  • Java中反射動(dòng)態(tài)代理接口的詳解及實(shí)例

    Java中反射動(dòng)態(tài)代理接口的詳解及實(shí)例

    這篇文章主要介紹了Java中反射動(dòng)態(tài)代理接口的詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • SpringBoot如何配置MySQL和Oracl雙數(shù)據(jù)源(Mybatis)

    SpringBoot如何配置MySQL和Oracl雙數(shù)據(jù)源(Mybatis)

    這篇文章主要介紹了SpringBoot如何配置MySQL和Oracl雙數(shù)據(jù)源(Mybatis)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • SpringBoot啟動(dòng)時(shí)運(yùn)行特定代碼的多種方式小結(jié)

    SpringBoot啟動(dòng)時(shí)運(yùn)行特定代碼的多種方式小結(jié)

    SpringBoot提供了多種方式在應(yīng)用程序啟動(dòng)時(shí)運(yùn)行特定的代碼,包括CommandLineRunner、ApplicationRunner、@PostConstruct、InitializingBean、事件機(jī)制和自定義注解等,下面就來(lái)具體介紹一下
    2025-01-01
  • Java不指定長(zhǎng)度的二維數(shù)組實(shí)例

    Java不指定長(zhǎng)度的二維數(shù)組實(shí)例

    今天小編就為大家分享一篇Java不指定長(zhǎng)度的二維數(shù)組實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • SpringBoot+OCR實(shí)現(xiàn)PDF內(nèi)容識(shí)別的示例代碼

    SpringBoot+OCR實(shí)現(xiàn)PDF內(nèi)容識(shí)別的示例代碼

    在SpringBoot中,您可以結(jié)合OCR庫(kù)來(lái)實(shí)現(xiàn)對(duì)PDF文件內(nèi)容的識(shí)別和提取,本文就來(lái)介紹一下如何使用 Tesseract 和 pdf2image 對(duì) PDF 文件進(jìn)行OCR識(shí)別和提取,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • 接口簽名怎么用Java實(shí)現(xiàn)

    接口簽名怎么用Java實(shí)現(xiàn)

    今天帶大家學(xué)習(xí)java的相關(guān)知識(shí),文章圍繞怎么用Java實(shí)現(xiàn)接口簽名展開(kāi),文中有非常詳細(xì)的代碼示例及介紹,需要的朋友可以參考下
    2021-06-06

最新評(píng)論