gpt4 book ai didi

c# - 从 DateTime 生成相对日期范围(本周、今年、上个月等)的最佳方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 18:01:37 25 4
gpt4 key购买 nike

我确定我不是第一个需要这样做的人,所以我正在寻找最好的方法。

我有一组带有选项的单选按钮,例如

  • 今年
  • 去年
  • 这个月
  • 上个月
  • 本周
  • 上周

我需要从当前日期 (DateTime.Now) 生成正确的相对日期范围。

例如,如果选择了 Last Year 并且当前日期是 4/2/09 14:45:32 我需要返回开始日期 1/1/08 00:00:0012/31/08 23:59:59 的结束日期。

有什么想法吗?

最佳答案

所有这些都已使用 DateTime.Today 进行了测试,并且按照您的要求工作:

public struct DateRange
{
public DateTime Start { get; set; }
public DateTime End { get; set; }
}

public static DateRange ThisYear(DateTime date)
{
DateRange range = new DateRange();

range.Start = new DateTime(date.Year, 1, 1);
range.End = range.Start.AddYears(1).AddSeconds(-1);

return range;
}

public static DateRange LastYear(DateTime date)
{
DateRange range = new DateRange();

range.Start = new DateTime(date.Year - 1, 1, 1);
range.End = range.Start.AddYears(1).AddSeconds(-1);

return range;
}

public static DateRange ThisMonth(DateTime date)
{
DateRange range = new DateRange();

range.Start = new DateTime(date.Year, date.Month, 1);
range.End = range.Start.AddMonths(1).AddSeconds(-1);

return range;
}

public static DateRange LastMonth(DateTime date)
{
DateRange range = new DateRange();

range.Start = (new DateTime(date.Year, date.Month, 1)).AddMonths(-1);
range.End = range.Start.AddMonths(1).AddSeconds(-1);

return range;
}

public static DateRange ThisWeek(DateTime date)
{
DateRange range = new DateRange();

range.Start = date.Date.AddDays(-(int)date.DayOfWeek);
range.End = range.Start.AddDays(7).AddSeconds(-1);

return range;
}

public static DateRange LastWeek(DateTime date)
{
DateRange range = ThisWeek(date);

range.Start = range.Start.AddDays(-7);
range.End = range.End.AddDays(-7);

return range;
}

关于c# - 从 DateTime 生成相对日期范围(本周、今年、上个月等)的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/711121/

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