2016-06-20 163 views
1

我正在將正確的參數傳遞給DateAndTime.DateDiff(Internval, Date1,Date2),但我得到No Overload方法DateDiff需要3個參數。DateAndTime.DateDiff不工作

private void CloseRegister() 
{ 
    try 
    { 
    GetTransactionNumberFromRegMst(); 
    SeqNum = 1; 
    TransDate = DateAndTime.DateDiff(DateInterval.Day, Convert.ToDateTime("12/28/1800"), DateTime.Now); 
    TransTime = DateAndTime.DateDiff(DateInterval.Second, DateTime.Today, DateTime.Now) * 100; 

    WriteCshTServClose(); 
    WriteTranServClose(); 

    UpdateRegMstWithTransactionNumber(); 
    UpdateNetRegsStatus(7); 
    UpdateTillSeqSequence(TillSeqSequence + 1); 

    } 
    catch (Exception ex) 
    { 
    string close = "CloseRegister"; 
    logger.AddEntry(TFSUtilities.Logger.EventType.Info, "frmMain.CloseRegister", "Exception", ref ex); 
    AbendProgram(ref close, ref ex); 
    } 
} 
+0

讓我知道在短您的要求/你所想達到 –

+0

@取消幸運我特林得到天之間的差額(1800年12月28日)現在? – CodeMan

+2

你應該能夠直接從彼此中減去它們。減法運算符重載日期以返回'TimeSpan'。 'var days =(time1 - time2).TotalDays;' –

回答

0

確保您引用Microsoft.VisualBasic(即使它是一個C#應用程序)在應用程序中加入一個參考。那麼你的代碼應該工作得很好:

例如

long TransTime = 
    Microsoft.VisualBasic.DateAndTime.DateDiff(
    Microsoft.VisualBasic.DateInterval.Second, DateTime.Today, DateTime.Now) * 100; 

隨着VS 2010和前鋒,你可以放棄可選參數。

另外,確保TransTimeTransDatelong

幫助reference

0

你拿在日內的時間差是更好的選擇如下。您可以直接減去一個日期從另一個然後用.TotalDays();

string inputString = "12/28/1800"; 
DateTime TransDate; 
if (DateTime.TryParseExact(inputString, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out TransDate)) 
{ 
    double differenceInDays = (DateTime.Now - TransDate).TotalDays; 
    double differenceInHours = (DateTime.Now - TransDate).TotalHours; 
} 
else 
{ 
    // Your input is not valid 
} 

注: -DateTime.TryParseExact()將日期和時間的指定字符串表示形式轉換爲其DateTime的 等同。 字符串表示的格式必須與指定的格式完全匹配。該方法返回一個值,指示 轉換是否成功。

包括using System.Globalization;CultureInfo