我的用例--我是一名医生。在特定的一天,我有几个小时是有空的,而有一些是不能的。我想创建一个对象Period myWorkDay。当有人把约会时间定在早上8点到9点(即一个时段patient1Appointment)时,这个时段就会从myWorkDay中“删除”。当新患者访问myWorkDay时,他只能看到myWorkDay - patient1Appointment。如果patient1释放了他的时间段,那么新患者就会看到完整的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);
}
}发布于 2013-03-19 11:04:43
JODA表示日期和时间,所以在回答您的问题时,是的,可以使用JODA在某种程度上对此进行建模。但您需要使用的不仅仅是JODA来对问题域进行建模。
您实际上是在做一些类似于Outlook日历的事情。Calendar已经在Java中使用了,所以你可以称它为日记。一个简单的日记可以知道你的工作日是哪一天,以及你的工作时间是什么(开始时间,结束时间)。
您可能希望将日记表示为日/周/月块。对于每一天,您现在可以确定它是否是工作日,以及工作时间。
然后,您将希望代表一个约会。最简单的约会有日期,开始时间和结束时间,与会者。您可以添加其他内容,如描述、状态(忙碌等)。
当有人创建新约会时,您可以检查它的开始/结束时间是否与现有约会冲突。
因此,从这个领域驱动的设计开始,我们可以说您可能具有以下数据/实体。
医生日记(可能Employee)
这将为您提供有关数据和对象模型以及主数据关系的线索。没有理由不能用标准类或JODA实现这一点。
https://stackoverflow.com/questions/15319877
复制相似问题