gpt4 book ai didi

c# - 实现一个 "Partial Date"对象

转载 作者:太空狗 更新时间:2023-10-30 00:36:20 26 4
gpt4 key购买 nike

我们需要一个“部分日期”对象,它允许您指定日期,例如

new PartialDate(1, null, null);  // first of the month
new PartialDate(1, 2, null); // first of the February
new PartialDate(null, 2, null); // February

用例与事件有关。例如,您可能有一门每年一月开课的类(class),在这种情况下,您不想或不需要指定日期对象的年份部分。

我们需要能够根据一些任意规则按这些日期进行排序,因此我想实现一种数据类型(它将实现 IComparable<PartialDate> ,但这超出了我的问题范围)。

我有几个问题:

  1. 这是个坏主意吗?
  2. 我在 .NET 中工作,是否有框架(或第 3 方库)的某些部分可以提供此功能?

最佳答案

类本身相当简单,只有三个可为空的整数作为日期组件。 (如果您想阅读有关如何正确实现结构的信息,您甚至可以将其设为结构。)

使它有点复杂的是处理特殊情况,例如:

new PartialDate(29, 2, null); // occurs only on leap years
new PartialDate(31, null, null); // occurs only seven months in a year

(另外,查看 DateTime 结构中使用的参数顺序 year,month,day,您可能想要复制该模式而不是发明新的模式一个。)

单个类的替代方案可以是一个基类,它具有针对不同类型日期的特定实现:

new MonthlyPartialDate(1); // the first every month
new YearlyParticalDate(2, 1); // the first of february
new YearlyPartialDate(2); // february

关于c# - 实现一个 "Partial Date"对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2267219/

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