在.Net 4中,一个日期和两个时间的最佳方法/数据类型

在.Net 4中,一个日期和两个时间的最佳方法/数据类型,.net,vb.net,datetime,.net-4.0,timespan,.net,Vb.net,Datetime,.net 4.0,Timespan,我有一个方法,它接受一些参数并生成一些XML发送到一个[古老的]web服务 我需要在XML中包括: 日期(年月日) 开放时间(小时:毫米) 关闭时间(小时:毫米) 现在,在过去,当我必须单独提供日期/时间时,我采用了单个DateTime参数,并将日期格式化为一个字段,将时间格式化为另一个字段 在这个场景中,我有一个日期和一天两次 我最初的方法是3个输入字段-一个日期,两个时间跨度。这感觉是错误的,因为时间跨度可能超过一天 另一个想法是选择两个日期——一个用于日期字段,然后两个字段的时间用于其他字

我有一个方法,它接受一些参数并生成一些XML发送到一个[古老的]web服务

我需要在XML中包括:

日期(年月日)

开放时间(小时:毫米)

关闭时间(小时:毫米)

现在,在过去,当我必须单独提供日期/时间时,我采用了单个DateTime参数,并将日期格式化为一个字段,将时间格式化为另一个字段

在这个场景中,我有一个日期和一天两次

我最初的方法是3个输入字段-一个日期,两个时间跨度。这感觉是错误的,因为时间跨度可能超过一天

另一个想法是选择两个日期——一个用于日期字段,然后两个字段的时间用于其他字段。这感觉是错误的,因为提供的日期实际上可能不同

我能想到的最后一个选项是有一个
OpeningDateTime
参数和一个
OpenDuration
timespan,但是,由于打开/关闭时间是根据一周中的某一天(而不是日期)存储的,开发人员需要自己计算时间跨度-这似乎很愚蠢,因为它打破了枯燥的原则。更不用说,时间跨度可以大于1天

简言之,我有3个解决方案可以工作,但没有一个是正确的,前2个解决方案只能在运行时处理问题。如果方法定义很难传递无效数据(如果不是不可能的话),我更愿意这样做——这将在设计时看到

也许我分析过度了,但一定有更简洁的方法

有人有首选方法吗?如果有,原因是什么?

您真正想要的是一个库,它的类型分别表示“日期”和“时间”。。。喜欢但不幸的是,它还没有准备好投入生产:(基本上.NET没有一套非常丰富的按时间顺序排列的类型:(

我认为您最初的DateTime+2 TimeSpans是目前最好的想法。特别是,
DateTime.TimeOfDay
是一个
TimeSpan
的事实表明,这是一个在正常方法中可以得到的适当表示形式。

您真正想要的是一个具有表示“日期”类型的库还有一个单独的“时间”…比如…但不幸的是,它还没有准备好投入生产:(基本上.NET没有一套非常丰富的按时间顺序排列的类型:(


我认为你最初的DateTime+2 TimeSpans是目前最好的想法。特别是,
DateTime.TimeOfDay
是一个
TimeSpan
的事实表明,这是一个在正常情况下可以得到的合适的表示方式。

谢谢-我不知道Noda Time-我刚刚浏览了博客,它是OKOS非常有趣-我们可以考虑何时达到一个更稳定的构建。@ BasICHOLL:我希望能找到一些时间来做更多的工作,很快,现在C的深度几乎已经完成。我可能会消化公共API,以确保我们的重要用例真的,非常直截了当。如果你可以给我发电子邮件的类型的歌剧。LoL只不过是意识到你激励了野田佳彦,我喜欢你使用的一个示范性的O.NET投影机的方法。今天晚上我会给你发一些用例。谢谢-我不知道野田时间——我刚刚浏览了这个博客,看起来很有意思。更稳定的构建。@Basiclife:我希望能尽快找到时间做更多的工作,因为C#Depth已经接近完成。我很可能会破坏公共API,以确保我们将重要的用例变得非常非常简单。如果你能通过电子邮件告诉我你想要执行的操作,那将非常有用。哈哈我刚刚意识到你煽动了野田佳彦——我喜欢你对一个典型的OS.Net项目所采取的方法。今晚我将通过电子邮件向你发送一些用例。