日期计算改进

本文关键字:计算 日期 | 更新日期: 2023-09-27 18:17:19

在我的程序中,我想计算最后一天,上周,最近3个月等

我用下面的代码试过了。

我的下拉列表是这样的:

string[] items = { "All", "Last 1 Day", "Last 2 Days", 
"Last 1 Week", "Last 2 Weeks", "Last 1 Month", 
"Last 3 Months", "Last 6 Months", "Last 1 Year" }; 

当我选择下拉列表时所选择的索引:

public int _selectedDay = -1;
        public int selectedDay
        {
            get { return _selectedDay; }
            set
            {
                this.RaiseAndSetIfChanged(x => x.selectedDay, value);
                dayCalculation(selectedDay);               
            }
        }

日计算方法:

void dayCalculation(int selected)
        {
            switch (selected)
            {
                case 0:
                    //MessageBox.Show("Selected Index==>" + (selectedDay));
                    break;
                case 1:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddDays(-1).ToString("dd/MM/yy")));                    
                    break;
                case 2:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddDays(-2).ToString("dd/MM/yy")));
                    break;
                case 3:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddDays(-7).ToString("dd/MM/yy")));
                    break;
                case 4:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddDays(-14).ToString("dd/MM/yy")));
                    break;
                case 5:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddMonths(-1).ToString("dd/MM/yy")));
                    break;
                case 6:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddMonths(-3).ToString("dd/MM/yy")));
                    break;
                case 7:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddMonths(-6).ToString("dd/MM/yy")));
                    break;
                case 8:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddYears(-1).ToString("dd/MM/yy")));
                    break;
                default:
                    break;
            }
        }

在这里我可以得到预期的输出。但是现在我想简化/减少程序行。是否有默认的或简单的方法来计算前几天?

日期计算改进

我认为你不能使它比你所拥有的更简单。一种解决方案是不使用0到8作为发布值,而是使用一些代码,例如:

d1, d2, d7, d14, m1, m3, m6, y1

然后解析此代码以确定要从当前日期中减去哪个值。例如:

d1 --> DateTime.Now.AddDays(-1)
m3 --> DateTime.Now.AddMonths(-3)