2017-04-23 7 views
0

私の上司は、各従業員が割り当てごとに費やした時間で作業を完了するのにどれくらいの時間がかかるかを判断する機能を記述するように依頼しています。私は2つの変数を作成しました.1つは作業が開始され、もう1つは完了した時間です。開始タイムスタンプは、作業が開始された正確な時間を取得することです。ただし、終了時刻スタンプは完了日を取ることですが、特定の時刻を追加する必要があります。既存の日付スタンプに特定の時間を追加する

たとえば、私は4/23/2017 4:07:00 PMに割り当てを開始します。私は2011年4月24日に課題を終了します。割り当ては、毎日午後5時頃まで完了するまでチェックされないので、終了時刻のタイムスタンプは、完全にマークされた特定の時刻に関係なく、常に正確に午後5時であることが望ましい。ここには日付だけが関心事です。

私は正常にタイムスタンプを取得することができましたが、私は決められた日付に固執するのに矛盾しています。

は、私が使用:

orderCompleteTimeStamp = CDate(orderCompleteDate + TimeValue("17:00")) 

そして、正しく表示するように見えた、しかし、時間差の計算に使用された場合orderCompleteTimeStampに保存されている実際の値は、やろうとしているのでとき、ONLY 5時00分である4/23/2017 1:55:26 PM - 4/23/2017 5:00:00 PM、時差は、-1028348.9を示します。 orderCompleteTimeStampを正確な時刻に戻すように設定すると、計算が正しく機能するので、特定の時刻を追加したものとしか思えません。

どのように私はこれを動作させることができますか?

+1

あなたはちょうどあなたが時間を追加する方法以外のいくつかのコードを表示する必要があります。あなたが 'DateDiff()'を使って違いを解決する方法はどうですか? – Lankymart

答えて

1

質問はあまり明確ではありませんが、このコードはうまく動作します。

Dim orderStartTimeStamp: orderStartTimeStamp = CDate("23/4/2017 13:55:26") 
Dim orderCompleteDate: orderCompleteDate = CDate("23/4/2017") 
orderCompleteTimeStamp = CDate(orderCompleteDate + TimeValue("17:00")) 

WScript.Echo orderCompleteTimeStamp 
WScript.Echo DateDiff("h", orderStartTimeStamp, orderCompleteTimeStamp) 

出力:

23/04/2017 17:00:00 
4 

は疑問が指定されていないとして、あなたは時間の違いをチェックしていると仮定しました。

問題が既に時刻コンポーネントを持っている日付の場合は、DateSerial()を使用して日付コンポーネントを取り出し、新しい日付変数を作成してください。

Dim dateFromDB: dateFromDB = "23/4/2017 18:23:02" 

Dim orderStartTimeStamp: orderStartTimeStamp = CDate("23/4/2017 13:55:26") 
Dim orderCompleteDate: orderCompleteDate = DateSerial(Year(dateFromDB), Month(dateFromDB), Day(dateFromDB)) 
orderCompleteTimeStamp = CDate(orderCompleteDate + TimeValue("17:00")) 
WScript.Echo orderCompleteTimeStamp 
WScript.Echo DateDiff("h", orderStartTimeStamp, orderCompleteTimeStamp) 

出力:

23/04/2017 17:00:00 
4 
関連する問題