首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Joda time -在给定的一段时间内?

Joda time -在给定的一段时间内?
EN

Stack Overflow用户
提问于 2013-03-10 15:16:17
回答 1查看 844关注 0票数 2

我的用例--我是一名医生。在特定的一天,我有几个小时是有空的,而有一些是不能的。我想创建一个对象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点欢迎另一位病人)

代码语言:javascript
复制
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);

    }   

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-19 11:04:43

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

您实际上是在做一些类似于Outlook日历的事情。Calendar已经在Java中使用了,所以你可以称它为日记。一个简单的日记可以知道你的工作日是哪一天,以及你的工作时间是什么(开始时间,结束时间)。

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

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

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

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

医生日记(可能Employee)

  • Doctor拥有一个或多个日记

  • 日记有工作日、工作时间;自己的日记有开始时间、结束时间、日期、与会者

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15319877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档