2016-11-23 9 views
0

事前に決められた値16と40ですばやくETAを取得しようとしています。項目には16時間かかりますが、1日あたりの時間は9-5(8)時間です。明らかに、私はその日の残りの時間を含める必要があります。これは、以下に抜粋したコードにあります。しかし、私はコードを進めるための最善の方法を見つけようとしています。おそらく、誰かが良いアイデアを持っているでしょうか?X時間を計算する時間は9-5時間だけ前に計算する

Dim TargetTime as Integer = 16 
Dim currentHr As Integer = current.Hour 
Dim TodaysRemainingHours As Integer = 0 

If currentHr >= 9 AndAlso currentHr < 17 Then 
    'Count remaining hours 
    TodaysRemainingHours = (17- currentHr) 
Else 
    'Dont count today 
    TodaysRemainingHours = 0 
End If 

私の計画は次のとおりです。

  • TargetTime - TodaysRemainingHours ---へ をカウントする値を与えます。
  • どういうわけか9時間5時間に基づいて時間を計算します。

  • 表示lblOutputとして:「ETA:2PM 25/11/2016」あなたが見ることができるように

私はにカウントする必要がvauleを取得する方法を知っているが、私は最初にしていくつかの助けが必要毎日の時間を9-5から数えて、実際の推定時間を返します。これは有益なものではなく、個人的なETAプログラムです。

+2

期間は8の倍数なので、「今」から「日」(つまり2または5)の数を数えてみません。 10:30火曜日に出発すると、ETAは10:30 Thur(または10:30 Sun)になります。 – topshot

答えて

0

トップショットありがとう、あなたのコメントは私がそれを解決するのに役立ちました!次のコードは私にとってはうまくいくと思われますが、とにかく問題を特定していません。私は、時間が午後5時を過ぎていれば、現在の残り時間を数えていないことを確認しなければならなかった。ありがとうございました。

 Dim TargetTime As Integer = 16 
     Dim current As Datetime = DateTime.now 
     Dim currentHr As Integer = current.Hour 
     Dim TodaysRemainingHours As Integer = 0 

     If currentHr >= 9 AndAlso currentHr < 17 Then 
      'Count remaining hours 
      TodaysRemainingHours = (17 - currentHr) 
     Else 
      'Dont count today 
      TodaysRemainingHours = 0 
     End If 

     If currentHr >= 9 AndAlso currentHr < 17 Then 
     'Deduct todays hours from target time. 
     TargetTime = (TargetTime - TodaysRemainingHours) 
      'Display results 
      MsgBox("ETA: " & Now.AddDays(TargetTime/8)) 
      Else 
     'Skip todays hours and count from tomorrow morning at 9am 
      Dim Tomorrow As DateTime = Today.AddDays(1) 
      Dim TomorrowMorning As TimeSpan = new TimeSpan(09, 00, 0) 
      Tomorrow = Tomorrow.Date + TomorrowMorning 
      'Display results 
      MsgBox("ETA: " & Tomorrow.AddDays(TargetTime/8)) 
      End If