2016-06-27 1 views
0

XML入力から取得したDateTimeStampがあります。これは、"2016-06-13T15:02:41+0800"のように見えます。datetimeをYYYY-MM-DDThhからmm:ssにYYYY-MM-DDhh:mm:ssの形式に変換します。

"YYYY-MM-DD hh:mm:ss"形式に変換した後、この値をdbに挿入する必要があります。どうすればC#でこれを行うことができますか?

+0

DateTime構造体のインスタンスをデータベースに渡し、datetime値を表す文字列を渡すことをお勧めします。 –

+0

で 'DateTime。ParseExact'は、*パラメータ化された*クエリによってデータベースに挿入することができる 'DateTime'値を取得します。 –

答えて

3

あなたはこの

string date = "2016-06-13T15:02:41+0800"; 
DateTime dateTime = Convert.ToDateTime(date); 

同様のDateTimeに文字列を変換することができ、これはと値を返します:私は、これはあなたの問題を解決することを願っています13-06-2016午前12時32分41秒

+0

これは私が提案しているのと同じ解決策です。 – SilentCoder

+0

Ravi Kanthさん、ありがとうございました。それは私を助けた。 –

+0

@SanthoshkumarLMあなたは_本当に_that_値を取得したいですか?この方法は、XML文字列ではなく、まったく異なる値を生成するためです。私の答えもチェックしてください。 –

1

あなたが既には、あなたの答えをマークし(私が選択した答えは間違ったの一種であると考えている)が、私はポイントにいくつかTHIを持ってあなたが私に教えてもらえますか?

まず、Convert.ToDateTimeを使用するのは、この場合には良い方法ではありません。どうして?

DateTimeインスタンスは、KindというプロパティがLocalであるため、文字列にタイムゾーン情報が含まれているため、このメソッドが返されるためです。これは、このDateTimeインスタンスの日付と時刻がローカルタイムゾーンの時刻に変換されたことを意味します。だから私は強くがこれがあなたが本当に望む価値だと疑う理由です。

UTCに最初に変換されます。2016-06-13 07:02:41に等しくなります。その後、にローカルタイムゾーンオフセットが追加されます。その値はです。 Ravi Kanth's caseでは、それは...例えばUTC +05:30よう

代わりのDateTimeに解析し、私はあなたがあなたの文字列へのより良いフィットDateTimeOffsetにそれを解析することをお勧めになります。

var s = "2016-06-13T15:02:41+0800"; 
var dto = DateTimeOffset.ParseExact(s, "yyyy-MM-ddTHH:mm:sszzz", 
            CultureInfo.InvariantCulture); 

は今、あなたは13.06.2016 15:02:41 +08:00としてDateTimeOffsetを持っていて、それはあなたがしたい方UtcDateTimeLocalDateTimeまたはDateTimeの特性の一つだ呼び出すことができます。

「YYYY-MM-DD hh:mm:ss」形式に変換した後、この値をdbに挿入する必要があります。

2番目..どのデータベースを正確に使用しますか? ではなくbad habit to kick as choosing the wrong data typeです。 Sql Server、Oracle、DB2などの一般的なRMDSのいずれかを使用している場合、それらはすべて関連の datetime型です。このような場合は、DateTimeの値を文字列表現で挿入しないでください。を直接に挿入してください。prepared statementsを使用してください。 SQLiteのようなデータベースを使用している場合、SQLiteはDateTimeの値をTEXTまたはINTEGERのいずれかに保存しますので、それは当てはまりません。Unix Timeです。

+0

です。親愛なるSoner、ありがとうございました。 上記の解決策は昨日(29日〜6月)まで働いていました。しかし今日、それは厄介な行動を始めました。 つまり私は2016-07-01T10としてXML文字列を持って今日:00:00 + 0800 期待値をして変換した後:2016年7月1日10時00分00秒 すなわち(7月1日) しかし、それは異なって解釈し、値を返しました2016-01-07 10:00:00(7月1日) 私のSSISパッケージが期待どおりに動作しませんでした。 参考までに、対象のデータベースはSQL SERVERです –

関連する問題