0

ねえ、私は2つの日付があり、異なる日を確認する必要があります。

問題は、サーバーの日付が通常のMM / DD/YYYY形式ではないことです。YYYYMMDDの形式です。

私は次のことを試しました:

Dim curDate As Date = Format(Now, "yyyyMMdd")
Dim srDate As Date = dr(6)
Dim M As Long = DateDiff(DateInterval.Weekday, curDate, srDate)

curDateのエラーは次のとおりです。

Conversion from string "20110325" to type 'Date' is not valid.

どんな助けでも素晴らしいでしょう!:o)

デビッド

4

6 に答える 6

2

四角い紐のペグを丸い日付の穴に打ち込まないようにしてください。木槌を壊す方法が多すぎます。Now関数はすでに日付を返します。

    Dim curDate As Date = Now.Date

ソースコードファイルの上部にあるOptionStrictOnは、この種の間違いを見つけるのに役立ちます。

サーバーから文字列を取得する場合(取得しないように祈ってください)、ParseExact()を使用して日付を変換します。

    Dim curDate As Date = Date.ParseExact(serverValue, "yyyyMMdd", Nothing)
于 2011-03-25T20:16:14.813 に答える
1

なぜ今そのようにフォーマットしているのですか?あなたはこれを行うことができます:

Dim curDate As Date = DateTime.Now.Date
于 2011-03-25T20:16:27.410 に答える
1

他のポスターが言っているように、 DateTime.Nowをフォーマットする必要はありません。

しかし、ここで他に問題が発生しています。をFormat返し、stringそれをに割り当てようとしていますDate。文字列を暗黙的に変換しようとして失敗します。

将来、「yyyyMMdd」のような日付文字列を使用してDateTime型に変換する場合は、次を使用しますDateTime.Parse

于 2011-03-25T20:18:52.207 に答える
1

あなたの問題は最初の行です。Option Strictそれ以外の場合はまったくコンパイルされないため、プロジェクト(恥ずかしがり屋です!)がオフになっているようです。

Format(Now, "yyyyMMdd")その方法でフォーマットされた現在の日付を文字列として生成します。Date問題は、その出力(文字列)を変数に割り当てようとしていることです。オフになっているためOption Strict、コンパイラはこの変換を暗黙的に示し、ランタイムは非標準の日付文字列を日付に変換しようとしています。これが失敗していることです。

コードをできるだけ変更しないでください。次のようになります。

Dim curDate As Date = Now.Date
Dim srDate As Date = DateTime.ParseExact(dr(6).ToString(), "yyyyMMDD", CultureInfo.InvariantCulture).Date
Dim M As Long = DateDiff(DateInterval.Weekday, curDate, srDate)

ステップ0:オプション制限をオンにする

このオプションをオフにして新しいコードを作成する必要がある理由はありません。コンパイル時に(このように)オフにすると簡単にキャッチされるランタイムエラーの可能性が多すぎます。これは、言語から完全に追放されるべき機能です。

ステップ1:標準の.NETタイプと機能を採用する

これは必須ではありませんが、他の開発者がコードを読みやすくし、他の開発者のコ​​ードが読みやすくなります。、、などFormatはすべてVB固有の関数であり、主に従来のVB6アプリケーションを.NETに簡単に移植できるようにするために存在します。言語固有のバージョンを使用する特別な理由がない限り、代わりに標準の.NET関数を使用することをお勧めします。DateDiffNow

于 2011-03-25T20:18:59.490 に答える
1

まず:

  • 「MM/DD / YYYY」は世界のほとんどで正常ではなく、北米のみです。
  • 中国では「YYYY-MM-DD」を使用しています。
  • ヨーロッパでは「DD/MM/YYYY」を使用

次に、既知の日付形式を解析している場合は、形式文字列をに渡すことができますDateTime.Parse。あなたの場合、それはあなたがする必要があることです。

于 2011-03-25T20:21:01.053 に答える
0

試す

Dim curDate As Date = Now
Dim srDate As Date = mid(dr(6),5,2) & "/" & right(dr(6),2) & "/" & left(dr(6),4)
于 2011-03-25T20:21:04.883 に答える