当前位置: 首页 > 知识库问答 >
问题:

Joda Time-在给定时间段内的时间段?

仲孙焱
2023-03-14

我的用例——我是一名医生。在某一天,我可以工作几个小时,但有些时间不可用。我想创建一个对象“周期我的工作日”。当有人预约上午8点到9点(即“周期病人1预约”)时,该时段将从我的工作日“删除”。当新患者访问myWorkDay时,他只看到myWorkDay-病人1约会。如果病人1释放了他的时隙,那么新患者会看到完整的myWorkDay。

有可能使用JodaTime做到这一点吗?

有一个额外的要求是不必要的。但是,如果你知道怎么做,请告诉我。

额外-定义myWorkDay中特定时间段的任务并执行它们。8-9时段(8-8:30钻牙,8:30-8:45磨牙,8:45-9:00做一些文书工作,然后在9点欢迎另一位患者)

import org.joda.time.*;

public class PeriodManager {


    public static void main(String[]args){

        DateTime startTime = new DateTime(2013, 7, 1, 9, 0);//(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour) 
        DateTime endTime = new DateTime(2013, 7, 1, 17, 0);// 9 to 5 (or 17) job :)

        Period fullDay = new Period(startTime, endTime);
        System.out.println("full day - " + fullDay);

        startTime = new DateTime(2013, 7, 1, 9, 0);
        endTime = new DateTime(2013, 7, 1, 10, 0);
        Period patient1Appointment = new Period(startTime, endTime);//9-10

        fullDay.minus(patient1Appointment);
        System.out.println("full day - pat 1 " + fullDay);

        startTime = new DateTime(2013, 7, 1, 9, 0);
        endTime = new DateTime(2013, 7, 1, 10, 0);
        Period patient1CancelAppointment = new Period(startTime, endTime);

        fullDay.plus(patient1CancelAppointment);
        System.out.println("full day + pat 1 " + fullDay);

        startTime = new DateTime(2013, 7, 1, 9, 0);
        endTime = new DateTime(2013, 7, 1, 10, 0);
        Period patient2Appointment = new Period(startTime, endTime);

        fullDay.minus(patient2Appointment);
        System.out.println("full day - pat 2 " + fullDay);

    }   

}

共有1个答案

孙宏壮
2023-03-14

JODA代表日期和时间,所以在回答您的问题时,可以使用JODA在某种程度上对此进行建模。但你需要用不仅仅是JODA的东西来建模问题域。

你基本上是在做Outlook日历之类的事情。Java中已经使用了日历,所以可以称之为日记。一本简单的日记就能知道你的工作日是哪几天,你的工作时间是什么(开始时间、结束时间)。

您可能希望将日志表示为日/周/月块。现在,您可以确定每天是否为工作日,以及工作时间。

然后,您将想要表示一个约会。最简单的约会有日期、开始时间和结束时间、与会者。您可以添加其他内容,如描述、状态(忙等)。)。

当有人创建新约会时,你可以检查它的开始/结束时间是否与现有约会冲突。

因此,从这个领域驱动的设计开始,我们可以说您可能有以下数据/实体。

  1. 医生(可能是雇员)
  2. 医生拥有1个或多个日记
  3. 日记有工作日,工作时间;拥有预约
  4. 预约有开始时间,结束时间,日期,出席者

这将为您提供有关数据和对象模型以及主数据关系的线索。没有理由不能用标准类或JODA实现这一点。

 类似资料:
  • 问题内容: 我需要知道是否由以下时间段定义: 内部有一个DST。 我正在遍历{start,end}定义的时间段集合,并在每次迭代中将开始和结束时间提前24小时。结果周期从午夜开始,到下一个午夜之前的1 ms结束。我发现如果该期间在班次内有夏令时,则会产生错误的结果,例如: 具有: 然后完成转移: 产生: 我想知道JodaTime中是否有任何标准API可以检查一段时间内是否有DST? 问题答案: 使

  • 本文向大家介绍C ++中两个给定时间段之间的差异,包括了C ++中两个给定时间段之间的差异的使用技巧和注意事项,需要的朋友参考一下 问题陈述 以字符串'HH:MM:SS'格式给出两个时间段。在这里,“ HH”代表小时,“ MM”代表分钟,“ SS”代表秒。找到这两个时间段之间相同字符串格式的差异。 示例 以下是C ++中的程序,用于查找所需的输出。 输出结果

  • 我试图解决以下问题:给定N个时间间隔,每个时间间隔指定为(开始,结束),不重叠,根据开始排序——找到一个包含给定日期的时间间隔。例如: 3人进入第一节,15人进入第四节,以此类推。 到目前为止,我有以下基本想法: 我们可以使用二进制搜索来找到相应的间隔(logn) 由于可能只有少数时间间隔较大,其余时间间隔较小,因此根据时间长短对itervals进行排序可能是值得的。然后,在统计上,大多数情况下,

  • 问题内容: 使用SQL时,是否可以在提供范围的列中插入随机的datetime值? 例如,给定范围为 我对范围部分感到困惑。正如我将要做的 问题答案: 这是一个应该有所帮助的示例: 它使用日期作为基础,将其转换为Unix时间戳,并向基础日期添加0到+2年的随机秒数,并将其转换回DATETIME。 它应该很接近,但在更长的时间内会leap年,其他调整会使其失效。

  • 我在我的项目中使用了Spring Boot,Spring Data,JPA(Hibernate)和MySQL。这是我的存储库界面中的方法签名: 当我检查SQL日志时,我可以看到“for共享”子句被附加到选择语句中。 这是MySQL文档中关于共享锁的一段引文: 如果这些行中的任何一行被尚未提交的另一个事务更改,您的查询将等待该事务结束,然后使用最新值。 我实际上可以通过从另一个线程更新该书来触发阻塞

  • 我试图在while循环中执行try-catch块。当我要求用户输入一个数字(应该是双精度的)时,我使用try-catch来捕获任何输入不匹配异常。我将其嵌套在while循环中,这样如果捕获到任何异常,用户可以根据需要重新输入输入。问题在于,如果捕获到异常,扫描仪将不允许用户出于某种原因重新输入输入。在第二次迭代中,当您返回到hours=kb.nextDouble的行时,会发现错误。这是代码。