[英]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.