日期计算改进

时间:2014-08-11 06:23:21

标签: c# windows-phone-7 datetime

在我的课程中,我想计算最后一天,上周,过去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;
            }
        }

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

它使您的解决方案更灵活但不简单。