gpt4 book ai didi

c# - DateTime 算法建议

转载 作者:行者123 更新时间:2023-11-30 20:42:08 25 4
gpt4 key购买 nike

我的要求是根据另一个日期计算一个日期。计算所需的一般规则是:

  1. 如果输入日期介于 4 月 1 日和 9 月 30 日之间(任何年份),则计算结果应等于输入年份的 12 月 31 日
  2. 如果输入日期介于 10 月 1 日和 3 月 31 日之间,则计算结果应等于“下一个”6 月 30 日。

根据这些要求,我有以下代码:

DateTime tmpDate = new DateTime( 2000, inputDate.Month, inputDate.Day );
DateTime aprilDate = new DateTime( 2000, 4, 1 );
DateTime septemberDate = new DateTime( 2000, 9, 30 );
DateTime endofYearDate = new DateTime( 2000, 12, 31 );
DateTime resultDate = DateTime.MaxValue;

if ( tmpDate >= aprilDate && tmpDate <= septemberDate ) {
resultDate = new DateTime( inputDate.Year, 12, 31, 23, 59, 59 );
}
else {
if ( tmpDate > septemberDate && tmpDate <= endofYearDate ) {
resultDate = new DateTime( inputDate.Year, 12, 31, 23, 59, 59 );
}
else {
resultDate = new DateTime( inputDate.Year + 1, 12, 31, 23, 59, 59 );
}
}

但是我认为这段代码有点乱。如何以更好的方式编写它?

最佳答案

这看起来很复杂:

if ( inputDate.Month > 3 && inputDate.Month < 10 ) {
resultDate = new DateTime( inputDate.Year, 12, 31, 23, 59, 59 );
}
else if (inputDate.Month > 9 ) {
//June, per spec rather than OPs code
resultDate = new DateTime( inputDate.Year + 1, 6, 30, 23, 59, 59 );
} else {
//Ditto
resultDate = new DateTime( inputDate.Year, 6, 30, 23, 59, 59 );
}

但是,这些值(value)观的时代存在确实让我担心。如果您打算将这些值用作特定时期的终点,我建议您改为计算接下来的 7 月或 1 月 1 日,然后使用 <比较而不是 <= .您犯错误的可能性要小得多,例如排除发生在期间最后一秒内的事件。

关于c# - DateTime 算法建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31608401/

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