2017-10-17 8 views
0

Je suis actuellement en train de créer un formulaire Web en Visual C#, l'application est d'être une calculatrice de finances.C# formulaire web - Vous cherchez à obtenir la date du premier lundi du mois après la date sélectionnée dans le calendrier

La plupart du code ci-dessous est étranger et a été seulement inclus pour montrer la page entière, comme détaillé dans le titre, je cherche pour pouvoir choisir une date du calendrier sur le formulaire Web et de là prend la date du premier lundi et l'afficher dans l'étiquette. Je peux actuellement sélectionner une date et l'afficher.

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); 
     } 
    } 
}  
+0

Qu'advient-il si l'utilisateur sélectionne le premier lundi d'un mois? Est-ce que vous affichez celui-là ou le mois prochain? – Xiaoy312

+0

regardez cet affichage et obtenez le premier jour du mois .. puis à partir de là, vous pouvez vérifier si le jour de la semaine est le lundi..Sunday ... etc https://stackoverflow.com/questions/25233520/how- Pour-obtenir-le-premier-et-dernier-jour-de-mois-calendrier-vue-dimanche-samedi ce n'est pas aussi difficile que vous pouvez le penser .. beaucoup de fonctions de date et de mois, vous pouvez utiliser po C#, https://stackoverflow.com/questions/25233520/how-to-get-the-first-and-last-day-of-a-month-calendar-view-sunday-saturday – MethodMan

Répondre

0

Cela devrait faire le travail:

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);