2016-05-02 61 views
1

我想獲得三個值的總和(EndDay + StartDay + months),所以我需要您的幫助來糾正我的代碼。 我寫這個代碼一次我運行它我得到3個誤差,這是我的代碼在C中獲取日期的錯誤#

1-運算符「/」不能被應用於類型「日期時間」和用於 浮動「INT」的操作數結束日期=(TO_DATE/endday指定);

2- CS0103 ASP.net在當前上下文中不存在行 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

試圖做什麼功能?什麼是浮動返回假設 - 天數? – markmnl

+0

不是應該返回月數 –

+0

幾個月麼?兩個日期之間?部分,如果兩個日期之間有1個月和4天?你將如何處理分數來自哪一個月? – yaakov

回答

0

我懷疑有更簡單succient algorithim實現不管它是你正在試圖做的 - 這是不清楚 - 什麼是float返回假設是嗎?

一般來說,如果你想獲得兩個DateTime的之間的時間段只要找出差異:

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

你眼前的問題是:

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

讓我們看看我們使用的是什麼數據類型: NumberOfMonths是一個int FROM_DATE.Day是一個int NumberOfMonths是一個int

如果我們將int除以int,我們會得到什麼?我們收到int!如果你想有一個float變化的操作數之一的至少一個,你,你會得到一個float,所以這應該做的伎倆:

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

我們再次與類型的線路有問題:

float EndDate = (TO_DATE/EndDay); 

TO_DATE是DateTime和EndDay是int所以你不能將他們分開,也不能期望答案是float

你想做什麼?

+0

現在正在工作。 –