2015-02-09 40 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