7

vbに次のコードがあります-

tAvailableDate = DateAdd("d", 21, Format(Now, gDATEFORMAT))

これをC#に変換しようとしています。

私はこれまでにこれを変換しました -

tAvailableDate = DateAdd("d", 21, Format (DateTime.Now, Global.gDATEFORMAT));

DateAdd()しかし、 orFormat()機能の代わりが見つかりません。

何か案は?ありがとう。

4

3 に答える 3

12

DateAddは、下位互換性のためにVB.NETに引き継がれた古いVB6メソッドです。名前空間をC#プロジェクトに含めると、C#でも機能するようになりMicrosoft.VisualBasicますが、C#またはVB.NETでこのメソッドを使用することはお勧めしません。これがあなたがそれをするべき方法です(それも読みやすいです):

tAvailableDate = DateTime.Now.AddDays(21);
于 2012-06-26T13:55:36.447 に答える
11

私のVB6は少し錆びていますが、思い出すと、21日を追加しようとしています。だからここにあなたがしたいことがあります:

tAvailableDate = DateTime.Now.AddDays(21);

アップデート

変数を から に変換したとおっしゃいましDateTimestring。に戻す必要がある場合string(別のコメントからのように見えます)、次のように呼び出します。

tAvailableDate.ToString("[format string]");

文字列を希望どおりにフォーマットする方法については、http: //msdn.microsoft.com/en-us/library/az4se3k1.aspxを参照してください。

于 2012-06-26T13:54:50.887 に答える
0

私はあなたの問題を熟考しましたが、昨日見逃した側面があります。意味のない機能だと思っていたのFormatですが、見た目が変でも意味があります。説明させてください。

VB6では

tAvailableDate = DateAdd("d", 21, Format(Now, gDATEFORMAT)) 

奇妙に見える (または間違っている) のはなぜですか? NowですDate。この日付を a (正確には aを含む a ) にFormat変換しますが、日数を追加するにはパラメーターが必要です。次のように宣言されています。StringVariantStringDateAddDateDateAdd

Function DateAdd(Interval As String, Number As Double, Date)

警告やコンパイラ エラーを表示する代わりに、VB6 はこの文字列を暗黙のうちに に変換してDateに渡しDateAddます。したがって、私の最初の仮定は、これをドロップすることでしたFormat

しかし、これは がどのように定義さFormatれているかに応じて、結果に望ましい影響を与える可能性があります。gDATEFORMAT日付部分のみが含まれている場合gDATEFORMAT、フォーマット関数は時刻部分を削除します! ただし、これは、VB6 で関数Dateを使用する代わりに関数を使用することで簡単に実現できます。Now

tAvailableDate = DateAdd("d", 21, Date) 

またはDateTime.Today.NET (C# または VB.NET)。

ただし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、これが変数の場合は日付をフォーマットし、結果の文字列を解析して日付を再度取得する必要があります。

于 2012-06-27T13:44:07.387 に答える