2015-02-09 37 views
0

我對編程相當陌生,剛剛遇到了這個網站,希望我可以得到一些工作上的幫助。由於旅行時間的百分比變化導致的時差的計算

我的目標是確定新的交貨時間,並在原始交貨時間內添加25%的延遲。這是在Windows窗體應用程序中完成的。用戶將在其各自的文本框中輸入原始交付開始和結束時間,並且當單擊按鈕時,新的交付時間將顯示在其各自的文本框中。這是我迄今爲止。

private void button1_Click(object sender, EventArgs e) 
    { 
     const double PERCENT = 0.25; 


     DateTime t1 = Convert.ToDateTime(txtB_StartT.Text); 
     DateTime t2 = Convert.ToDateTime(txtB_EndT.Text); 
     TimeSpan ts = t1.Subtract(t2); 
     double tsMin = (double)Convert.ToDouble(ts); 
     double tsMinTot = ts.TotalMinutes; 
     short tsMinPercent = (short)(((double)tsMinTot) * PERCENT); 
     double tsAndPercentTot = tsMinPercent + tsMinTot; 
     DateTime newTimeMinTot = Convert.ToDateTime(tsAndPercentTot); 

     int hours = newTimeMinTot.Hour; 
     int minutes = newTimeMinTot.Minute; 

     string newTimeStrg = string.Format("{0:d1}:{1:d2}", hours, minutes); 


     txtB_NewDelivT.Text = newTimeStrg; 

所以我試圖解決這個問題towork但仍引發錯誤

+2

有沒有你不使用的日期時間和時間跨度類的理由? http://www.dotnetperls.com/datetime 和即時通訊對不起,你的代碼太難閱讀。 簡單的調試應該可以幫到你。 – Nahum 2015-02-09 05:35:44

+0

剛剛提出同樣的事情:http://stackoverflow.com/questions/10500095/getting-time-difference-between-two-values – 2015-02-09 05:41:22

+0

是的,那是因爲我不知道如何使用DateTime。正如我所說的,我沒有以前的經驗,也是編程新手。調試如何幫助? – Soto 2015-02-09 05:44:23

回答

1

我認爲這會做你的需要:

//Initial Delivery 5 Days 
    DateTime start = DateTime.Now; //User Enters todayy as start 
    DateTime end = start.AddDays(5); //User enters 5 days from now as end. 

    //Get the ticks between now and 5 days time 
    long ticksDiff = end.Ticks - start.Ticks; 

    //Calculate 25% of difference 
    long percentOfTicks = (long)(((double)ticksDiff) * 0.25); 

    //This is your new date (orifiginal delivery date + 25%) 
    DateTime newDelayedStart = end.AddTicks(percentOfTicks); 
+0

這很棒,更多的是我嘗試做的事情。我將如何改變,只有在hh:mm格式。這應該在24小時內發生。 – Soto 2015-02-09 05:51:43

+0

它的相同,只是在日期時間上定義日期和時間: – Noel 2015-02-09 05:54:27

+0

像這樣DateTime start = new DateTime(2015,2,10,6,0,0); DateTime end = new DateTime(2015,2,10,15,0,0); – Noel 2015-02-09 05:56:37