日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線(xiàn)咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

本文介紹了考慮到從初始日期開(kāi)始的工作計(jì)劃,我如何生成到期日?的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

示例

到期時(shí)間為15分鐘

日程安排

周一至周五:7:30-17:00

星期六9:00-14:00

周日10:00-13:00

如果我的初始日期(IniDate)是星期一的6:00,那么截止日期就是星期一的7:45
如果我的INDate是星期一的8:00,我的預(yù)產(chǎn)期是星期一的8:15,但是如果我的INDate是星期一的16:50,我的預(yù)產(chǎn)期是星期二的7:35,因?yàn)槲译x星期一有10分鐘,離第二天有5分鐘,另外,如果我的INDate是星期一的18:00,我的預(yù)產(chǎn)期是星期二的7:45,在Talend Open Studio中使用Java進(jìn)行數(shù)據(jù)集成,這將使用實(shí)際日期。這意味著假設(shè)我的初始日期是2020年5月5日18:00,那么我的預(yù)產(chǎn)期將是2020年6月5日7:45,考慮到時(shí)間表,這是我的第一個(gè)問(wèn)題,嘗試在中間變量部分的TMap組件中使用它。

推薦答案

將您的到期時(shí)間表示為Duration

Duration dueTime = Duration.ofMinutes(15);

將您的日程表表示為EnumMap<DayOfWeek, DailySchedule>,其中DailySchedule是您為每天的開(kāi)放和關(guān)閉時(shí)間編寫(xiě)的類(lèi)。在類(lèi)內(nèi)部將時(shí)間表示為LocalTime對(duì)象。該類(lèi)可能具有用于確定給定時(shí)間是在計(jì)劃間隔之前、之內(nèi)還是之后的方法。

最好將您的初始時(shí)間05/05/2020 18:00表示為相關(guān)時(shí)區(qū)的ZonedDateTime(LocalDateTime可能也可以,但確實(shí)不適合此目的)。

給出你最初的日期和時(shí)間,去掉星期幾。在地圖上查一查日程表。如果時(shí)間不在計(jì)劃間隔內(nèi),請(qǐng)首先根據(jù)需要將其調(diào)整為今天或明天的間隔開(kāi)始時(shí)間。

在您的到期日期和時(shí)間中的第一個(gè)快照是調(diào)整后的日期和時(shí)間加上到期時(shí)間。ZonedDateTime具有接受Durationplus方法。現(xiàn)在,如果到期日期在下一個(gè)日期或在今天的關(guān)閉時(shí)間之后,這是不正確的。在本例中,使用Duration.between計(jì)算一天可以花費(fèi)多少時(shí)間(示例中的10分鐘)。從到期時(shí)間(Duration.minus())中減去此值。現(xiàn)在從第二天的開(kāi)放時(shí)間開(kāi)始。檢查真的應(yīng)該在循環(huán)中進(jìn)行,以考慮到每天的時(shí)間表可能比預(yù)期時(shí)間短。如果周六的日程安排為09:00-09:05,周日的日程安排為10:00-10:05,我們可能不得不從周五循環(huán)到周一,然后才能找到正確的截止日期和時(shí)間。

Duration、DayOfWeek、LocalTimeZonedDateTime都屬于現(xiàn)代Java日期和時(shí)間API java.time。位于底部的教程鏈接。

稍后編輯:代碼

我可能會(huì)這樣做:

Map<DayOfWeek, DailySchedule> weeklySchedule = new EnumMap<>(DayOfWeek.class);
DailySchedule weekdaySchedule
        = new DailySchedule(LocalTime.of(7, 30), LocalTime.of(17, 0));
for (DayOfWeek dow = DayOfWeek.MONDAY;
        dow.getValue() <= DayOfWeek.FRIDAY.getValue(); dow = dow.plus(1)) {
    weeklySchedule.put(dow, weekdaySchedule);
}
weeklySchedule.put(DayOfWeek.SATURDAY,
        new DailySchedule(LocalTime.of(9, 0), LocalTime.of(14, 0)));
weeklySchedule.put(DayOfWeek.SUNDAY,
        new DailySchedule(LocalTime.of(10, 0), LocalTime.of(13, 0)));

Duration dueTime = Duration.ofMinutes(15);

// Set initial day and time
DayOfWeek currentDay = DayOfWeek.MONDAY;
LocalTime currentTime = LocalTime.of(16, 50);
Duration remainingTimeToAdd = dueTime;

DailySchedule todaysSchedule = weeklySchedule.get(currentDay);
if (todaysSchedule.isBeforeOpen(currentTime)) {
    currentTime = todaysSchedule.getOpen();
} else if (todaysSchedule.isOnOrAfterClose(currentTime)) {
    currentDay = currentDay.plus(1);
    todaysSchedule = weeklySchedule.get(currentDay);
    currentTime = todaysSchedule.getOpen();
}
// We will break this loop explicitly when done
while (true) {
    // Can time be added today?
    LocalTime candidateDueTime = currentTime.plus(remainingTimeToAdd);
    if (todaysSchedule.isWithinSchedule(candidateDueTime)) {
        // yes, done
        currentTime = candidateDueTime;
        break;
    } else {
        // take remainder of today and continue tomorrow
        remainingTimeToAdd = remainingTimeToAdd.minus(Duration.between(currentTime, todaysSchedule.getClose()));
        currentDay = currentDay.plus(1);
        todaysSchedule = weeklySchedule.get(currentDay);
        currentTime = todaysSchedule.getOpen();
    }
}

System.out.println("Due day and time: " + currentDay + " at " + currentTime);

示例的輸出:

截止日期和時(shí)間:星期二07:35

如果到期時(shí)間足夠長(zhǎng),從一天關(guān)閉到第二天打開(kāi),代碼將不起作用。并且缺少各種驗(yàn)證和檢查,您將需要添加它們。

鏈接

Oracle tutorial: Date Time解釋如何使用java.time。

這篇關(guān)于考慮到從初始日期開(kāi)始的工作計(jì)劃,我如何生成到期日?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,

分享到:
標(biāo)簽:到期日 工作計(jì)劃 日期 生成 考慮到
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定