gpt4 book ai didi

algorithm - 计算总天数减去周末

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:05 24 4
gpt4 key购买 nike

我需要获取自创建日期以来经过的天数。这个数字需要减去周末。我只有一些函数:JulianDay、JulianWeek、JulianYear 来获取 Julian 日期值,我还有 Today 返回今天的日期,时间戳返回日期和时间。我已经设法通过使用 JulianDay(today)-JulianDay(creation date) 来获得 today-creation date 的差异,但我仍然无法解决减去周末的问题

最佳答案

不完全确定您在问题中引用的功能是做什么的,但是,您似乎对进行基本的日期算术以确定两个给定日期之间的天数。困难的部分似乎计算周末减去多少天。

我想你可以用两个函数来完成这个:

  1. 给定两个日期,返回它们之间的天数。调用此 DAYS(date-1, date-2)
  2. 给定一个日期,返回星期几(其中 1 = 星期一 ... 7 = 星期日)。调用这个 DAY-OF-WEEK(date)

有了这些功能,您就可以执行以下操作:

  • 计算日期范围内的整周:WEEKS = DAYS(date-1, date2) mod 7
  • 计算天数而不是整周的一部分:DAYS-LEFT = DAYS(date-1, date-2) - (WEEKS * 7)
  • 确定最后一天是星期几:LAST-DAY = DAY-OF-WEEK(date-2)

调整部分周的 DAYS-LEFT 数如下:

if DAYS-LEFT > 0 then
case LAST-DAY
when 6 then /* Saturday */
DAYS-LEFT = DAYS-LEFT - 1
when 7 then /* Sunday */
if DAYS-LEFT = 1 then
DAYS-LEFT = 0
else
DAYS-LEFT = DAYS-LEFT - 2
end-if
when other /* Monday through Friday */
case DAYS-LEFT - LAST-DAY
when > 1 then
DAYS-LEFT = DAYS-LEFT - 2
when = 1 then
DAYS-LEFT = DAYS-LEFT - 1
when other
DAYS-LEFT = DAYS-LEFT /* no adjustment */
end-case
end-case
end-if

DAYS-EXCLUDING-WEEKENDS = DAYS(date-1, date-2) - (WEEKS * 2) + DAYS-LEFT

我假设您拥有或可以构建一个 DAYS(date-1, date-2) 函数。下一位是确定星期几给定的日期落在。执行此操作的算法称为 Zeller's congruence .我不会在这里重复该算法,因为维基百科对它的描述做得很好。

希望这能让你上路......

关于algorithm - 计算总天数减去周末,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17474228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com