0

これが以前に尋ねられた場合は、正しい方向に向けてください。私のグーグルスキルでは、役立つものは何も見つからないようです。

このような文字列を読み取る次のコードがあります。Outage StartDate: 05/10/11 23:59 EST
日付情報を引き出します。つまり、05/10/11 23:59 です。

sStartTime = Mid(objItem.Body, 18, 15) ' Extract the start time
Debug.Print "sStartTime after reading: " & sStartTime
sStartTime = Format(sStartTime, "dd/mm/yy hh:mm") ' Format date correctly
Debug.Print "sStartTime after formatting: " & sStartTime

これは私が通常得る出力です:

sStartTime after reading:  05/10/11 23:59
sStartTime after formatting: 10/05/11 23:59

ただし、日と年が入れ替わることもあります。

sStartTime after reading:  14/07/11 23:59
sStartTime after formatting: 11/07/14 23:59

その後、CDate は完全に詰め込み、日付を 1931 などに変換します...日付文字列を日付オブジェクトに変換する助けがあれば大歓迎です。

===============

編集:おそらく最初の投稿でこれについて言及する必要がありました。文字列の読み取りの背後にある考え方は、カレンダーの予定を作成できるように Date オブジェクトに変換することです。現在、私はこれを使用しています。

dStartTime = CDate(sStartTime)

問題の行だと思うのは、sStartTime = "29/09/11 23:00" (dd/mm/yy hh:mm) および dStartTime = "11/9/2029 11:00:00 PM" です。

したがって、明らかにいくつかの変換の問題が発生していますが、29/09/11 23:00 を同等の日付オブジェクトに変換するために、CDate 関数にどの形式を入力する必要があるのか​​ わかりません。

4

1 に答える 1

6

Format(sStartTime, "dd/mm/yy hh:mm")sStartTime は日付ではなく文字列であるため、正しく機能しません。
正しく入力された日付
dStartTime= DateSerial(Mid(sStartTime,10,2),Mid(sStartTime,7,2),Mid(sStartTime,4,2)) + TimeSerial(...) などを取得するには、いくつかの追加作業を行う必要があります。
その後、Format 関数を正しく適用できます。

于 2011-09-20T09:54:52.017 に答える