私はあなたの問題上で考えていると私は昨日逃した側面があります。 Format
の機能は無意味だと思いましたが、奇妙に見えても意味があります。私に説明させてください。 VB6で
は、我々は
tAvailableDate = DateAdd("d", 21, Format(Now, gDATEFORMAT))
なぜそれが奇妙な(あるいは間違った)見えないがありますか? Now
はDate
です。 Format
は、この日付をString
(正確にはString
を含むVariant
)に変換しますが、DateAdd
は、追加できるようにするためには、Date
パラメータを必要とします。 DateAdd
は、このように宣言されています
Function DateAdd(Interval As String, Number As Double, Date)
代わりに警告またはコンパイルエラーを与える、VB6は黙っDate
に戻って、この文字列を変換し、DateAdd
に渡します。だから私の最初の仮定はちょうどこれを落とすことでしたFormat
。
しかし、このは、どのように結果に影響を与えることができますか?gDATEFORMAT
が定義されています。 gDATEFORMAT
に日付部分のみが含まれている場合、書式機能は時間部分を削除します!しかしながら、これは単に.NET(C#またはVB.NET)でVB6
tAvailableDate = DateAdd("d", 21, Date)
又はDateTime.Today
にNow
機能をDate
関数を使用して代わりに使用することによって達成することができます。
ただし、gDATEFORMAT
には月と年のみが含まれます。 VB6(私のスイスのロケールを使用して):あなたが見ることができるように
Date ==> 27.06.2012
Format(Date,"MM.yyyy") ==> "06.2012"
CDate(Format(Date,"MM.yyyy")) ==> 01.06.2012
は、日付をフォーマットすると、この場合には現在の月の最初の日を返すために効果を持っているでしょう。 21日を追加することで、今月の22日をいつも得ることができます。これは、現在の日付に21日を追加することとはまったく異なります。 C#では、あなたが正しいとするアプローチを決定するために
DateTime today = DateTime.Today;
tAvailableDate = new DateTime(today.Year, today.Month, 22);
と同じことを実現することができ、あなたはgDATEFORMAT
に何が含まれているか知っているか、これが可変である場合には、日付をフォーマットしてから取得するには、結果の文字列を解析する必要がありますどちらか再度日付。
達成しようとしていることは何ですか?あなたには、.NETを知っている人だけが必要であり、.NET *と* VB6を知っている人は必要ではないことがわかります。 –