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#でこれを行うことができますか?
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#でこれを行うことができますか?
あなたはこの
string date = "2016-06-13T15:02:41+0800";
DateTime dateTime = Convert.ToDateTime(date);
同様のDateTimeに文字列を変換することができ、これはと値を返します:私は、これはあなたの問題を解決することを願っています13-06-2016午前12時32分41秒
を
これは私が提案しているのと同じ解決策です。 – SilentCoder
Ravi Kanthさん、ありがとうございました。それは私を助けた。 –
@SanthoshkumarLMあなたは_本当に_that_値を取得したいですか?この方法は、XML文字列ではなく、まったく異なる値を生成するためです。私の答えもチェックしてください。 –
あなたが既には、あなたの答えをマークし(私が選択した答えは間違ったの一種であると考えている)が、私はポイントにいくつか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
を持っていて、それはあなたがしたい方UtcDateTime
、LocalDateTime
または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です。
です。親愛なる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です –
DateTime構造体のインスタンスをデータベースに渡し、datetime値を表す文字列を渡すことをお勧めします。 –
で 'DateTime。ParseExact'は、*パラメータ化された*クエリによってデータベースに挿入することができる 'DateTime'値を取得します。 –