繁体   English   中英

C#Web表单-寻找从日历中选择日期之后的月份的第一个星期一的日期

[英]C# web form - Looking to get the date of the first monday of the month after the selected date from the calendar

我目前正在使用Visual C#创建Web表单,该应用程序将成为财务计算器。

下面的大多数代码都是多余的,仅用于显示整个页面(如标题中所述),我希望能够从Web表单的日历中选择一个日期,并从该日期中选择第一个星期一的日期并显示在标签中。 我目前可以选择一个日期并显示它。

namespace FinanceCalc
{
    public partial class About : Page
    {
        decimal NumPmt = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void Price_TextChanged(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(Price.Text))
            {
                Response.Write("Please enter the Vehicle Price");
            }
        }

        protected void DepositCalc_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(Price.Text))
            {
                Response.Write("Please enter the Vehicle Price");
            }
            else
            {
                decimal price = Convert.ToDecimal(Price.Text);
                decimal depositamount = (price / 100 * 15);

                Deposit.Text = depositamount.ToString();
            }
        }

        protected void FinanceCalc_Click(object sender, EventArgs e)
        {
            // This works out if all required boxes have been populated and displays a warning message if they have not been.
            if (String.IsNullOrEmpty(Price.Text))
            {
                Response.Write("Please enter the Vehicle Price.");
            }

            if (String.IsNullOrEmpty(Deposit.Text))
            {
                Response.Write("Please calculate the deposit.");
            }

            if (String.IsNullOrEmpty(Length.Text))
            {
                Response.Write("Please enter the finance length.");
            }

            if (Convert.ToInt32(Length.Text) < 1)
            {
                Response.Write("Please choose between 1, 2 and 3 years.");
            }

            if (Convert.ToInt32(Length.Text) > 3)
            {
                Response.Write("Please choose between 1, 2 and 3 years.");
            }
            else
            {
                // This works out payment amounts
                NumPmt = 12 * int.Parse(Length.Text);
                decimal price = Convert.ToDecimal(Price.Text);
                decimal deposit = Convert.ToDecimal(Deposit.Text);
                decimal MonthlyPayments = (price - deposit) / NumPmt;

                // This populates the Finance Info text box with the information
                Results.Text = "Deposit Amount - £" + Deposit.Text + Environment.NewLine + "Arrangement Fee - £88" + Environment.NewLine + "Completion Fee - £20" + Environment.NewLine + "Number of Payments: " + NumPmt
                + Environment.NewLine + "Delivery Date: " + DeliveryDate.SelectedDate + Environment.NewLine + "First Payment Date: " + Environment.NewLine + "First Payment Amount: £" + MonthlyPayments + " plus your £88 Arrangement Fee."
                + Environment.NewLine + "Monthly Payments: £" + MonthlyPayments + " for " + (12 * int.Parse(Length.Text) - 2) + " months." + Environment.NewLine + "Final Payment Amount: £" + MonthlyPayments + " plus your £20 Completion Fee";
            }
        }

        protected void Reset_Click(object sender, EventArgs e)
        {
            //This resets all of the information boxes, allowing the user to start again
            Price.Text = "";
            Deposit.Text = "";
            Results.Text = "";
        }

        protected void Length_TextChanged(object sender, EventArgs e)
        {
            // This works out how many monthly payments will be made. 
            NumPmt = 12 * int.Parse(Length.Text);
        }
    }
}    

这应该做的工作:

var selectedDate = new DateTime(2018, 5, 2);
var firstMonday = Enumerable.Range(0, 2)
    .SelectMany(monthOffset => Enumerable.Range(1, 7)
        .Select(day => new DateTime(date.Year, date.Month + monthOffset, day)))
    .Where(x => x.DayOfWeek == DayOfWeek.Monday)
    .First(x => x > selectedDate);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM