2016-05-02 7 views
1

Ich möchte Summe von drei Werten erhalten (EndDay + StartDay + Monate), also brauche ich Ihre Hilfe, um meinen Code zu korrigieren. ich diesen Code schrieb, nachdem ich es laufen Ich habe 3 Fehler, dieFehler mit Mein Code, um Datum in C zu erhalten #

1- Operator ‚/‘ angewendet werden kann, nicht auf die Operanden vom Typ ‚Datetime‘ und ‚int‘ für float EndDate = (TO_DATE/EndDay);

2- CS0103 ASP.net Der Name existiert im aktuellen Kontext nicht in Zeile int Date = EndDay + StartDay + months;

public float GetMonths(DateTime FROM_DATE, DateTime TO_DATE) 
     { 
      if (FROM_DATE > TO_DATE) 
      { 
       throw new Exception("Start Date is greater than the End Date"); 
      } 

      int NumberOfMonths = System.DateTime.DaysInMonth(FROM_DATE.Year, FROM_DATE.Month); 
      if (FROM_DATE.Day != 1){ 

       float StartDay = (NumberOfMonths - FROM_DATE.Day)/NumberOfMonths; 
      } 
      else 
      { 
       float StartDay = 1; 
      } 

      float months = ((TO_DATE.Year * 12) + TO_DATE.Month) - ((FROM_DATE.Year * 12) + FROM_DATE.Month); 
      int EndDay = System.DateTime.DaysInMonth(TO_DATE.Year, TO_DATE.Month); 
      if (TO_DATE.Day!= System.DateTime.DaysInMonth(TO_DATE.Year, TO_DATE.Month)) 
      { 

       float EndDate = (TO_DATE/EndDay); 
      } 
      else 
      { 
       float EndDate = 1; 
      } 

      int Date = EndDay + StartDay + months; 
      return Date; 
     } 
+0

Was versucht die Funktion zu tun? Was ist der zurückgegebene Float - Anzahl der Tage? – markmnl

+0

nein es sollte die Anzahl der Monate zurückgeben –

+0

Anzahl der Monate was? Zwischen den beiden Daten? Teilweise, wenn zwischen den beiden Daten 1 Monat und 4 Tage liegen? Wie würdest du mit dem Monat umgehen, aus dem der Bruch kommt? – yaakov

Antwort

0

Ich vermute, es ist viel einfacher succient algorithmus zu erreichen, was auch immer es ist, dass Sie versuchen, zu tun - was unklar ist - was ist das float Sie annehmen Rückkehr von sein?

Im Allgemeinen, wenn Sie die Zeit zwischen zwei DateTime ‚s einfach den Unterschied finden wollen:

TimeSpan diff = toDateTime - fromDateTime; // NOTE: the result is a `TimeSpan` type 

Ihre unmittelbaren Probleme sind:

float StartDay = (NumberOfMonths - FROM_DATE.Day)/NumberOfMonths; 

Lets sehen, welche Datentypen verwenden wir : NumberOfMonths ist ein int FROM_DATE.Day ist ein int NumberOfMonths ist ein int

Was bekommen wir, wenn wir eine int durch eine int teilen?

Wir bekommen eine int! Wenn Sie eine float Änderung mindestens einer der Operanden ein und Sie erhalten Sie eine float erhalten, so sollte dies den Trick:

float StartDay = (NumberOfMonths - FROM_DATE.Day)/(float)NumberOfMonths; 

Wieder haben wir ein Problem mit den Typen mit der Zeile:

float EndDate = (TO_DATE/EndDay); 

TO_DATE ist ein DateTime und EndDay ist ein int, so dass Sie sie nicht teilen können und die Antwort float erwarten konnte!

Was möchten Sie tun?

+0

großartig, es funktioniert jetzt. –

Verwandte Themen