2017-02-15 11 views
0

この2017-02-13T00:00:00 + 08:00 datetimeはxmlファイルの文字列です。整数としてyyyyMMddに変換したい。DateTime文字列を整数に変換する

Integer.Parse(myRow("ENT_DATE").ToString("yyyy") & myRow("ENT_DT").ToString("MM") & myRow("ENT_DT").ToString("dd")) 

しかし、それはエラーを返します:

これは私がしようとしたものです。 Conversion from string "yyyy" to type 'Integer' is not valid.

myRow("ENT_DATE")は、問題は、あなたが正しいToStringメソッドを呼び出していないので、DataRowItemプロパティは、Object参照を返すことです2017-02-13T00:00:00+08:00

答えて

2

を参照してください。このコードは次のようになります。

CInt(CDate(myRow("ENT_DATE")).ToString("yyyyMMdd")) 

あなたは、あなたが正しいDate.ToStringメソッドを呼び出している、第一種Dateとしてフィールドの値をキャスト。

+0

これはおそらく、CDateがタイムゾーン(+8)を考慮し、私が別のタイムゾーン(+1)にいるため、 '20170212'ではなく' 20170213'ではありません。 OPにとって問題ではないかもしれませんが、まだ考慮に入れるべきことです。 –

+0

ありがとうございました..私の日を保存しました... – FullStack

+0

@PeterBは、日付がタイムゾーンに従って変更されます.. ?? – FullStack

0

.ToString("yyyy")を使用すると、唯一のDateTime値ではなく、文字列上で動作します。その後、

最も簡単な方法は、おそらくあなたは左を(使用して必要な数字を取って)と置換された()、およびこのような整数値にそれらの、変換します。これは、用20170213を生成

CInt(Left(myRow("ENT_DATE"), 10).Replace("-", "")) 

をアプリケーションに設定されているタイムゾーンに関係なく、指定された入力を返します。

+0

Hmmm ...私は 'DataTable'の値が実際にはXMLから直列化された' DateTime'だったと仮定していました。そうであれば、あなたのソリューションはうまくいかず、おそらく私は間違っていて、実際には 'String'です。私はOPに 'Option Strict Off'が必要だと思うので、もしそれが' DateTime'だったなら、遅くバインドされたコールが最初に働いていたはずです。 – jmcilhinney

関連する問題