2

以下のコードをC#でコンパイルしました

string datetime = String.Format("{0:MM/dd/yyyy hh:mm:ss tt}", root.SelectSingleNode("lasttime").InnerText);



lastUpdateTimestamp = DateTime.ParseExact(datetime, "MM/dd/yyyy hh:mm:ss tt", CultureInfo.CurrentCulture);

しかし、出力では、lastUpdateTimestampは2013年2月8日午前7:00:24ではなく2013年2月8日午前7:00:24になります。

私が欠けているものはありますか?

この値を取得した後、クエリを実行してこのエラーを取得しています

Invalid month in timestamp "2": cannot find leading zero [SQL query syntax invalid or unsupported.]

こんにちはすべて、私は解決策を得ました、lastUpdateTimestampを渡すのではなく、文字列変数で日付を取得し、適切な形式でその値を取得しています。その働き

4

3 に答える 3

3

root.SelectSingleNode("lasttime").InnerText文字列を返します。

DateTimeフォーマット指定子を使用して文字列をフォーマットしようとしています。

何をしようとしているのかわかりませんが、このようなものは機能するはずです

string xmlstring = root.SelectSingleNode("lasttime").InnerText;
DateTime parsed = DateTime.ParseExact(xmlstring, "M/d/yyyy h:mm:ss tt");

string datetime = string.Format("{0:MM/dd/yyyy hh:mm:ss tt}", parsed);
于 2013-02-08T09:02:13.137 に答える
0

コメントから:

lastUpdateTimestamp.ToString()として出力を取得しています。2013年2月8日07:00:24AMである必要がありますが、2013年2月8日7:00:24AMと表示されています。

lastUpdateTimestamp.ToString()現在のカルチャの一般的な日時形式を使用してフォーマットします。あなたの場合、これは明らかにM/dd/yyyy...です。

別の形式が必要な場合は、次のようなパラメータとして指定する必要がありますDateTime.ToString

lastUpdateTimestamp.ToString("MM/dd/yyyy hh:mm:ss tt")

または、現在のカルチャに依存しない固定形式の場合:

lastUpdateTimestamp.ToString("MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture)
于 2013-02-08T09:05:43.427 に答える
0

DateTimeしたがって、あなたの質問は、文字列をwithに解析する方法ではなく、 :Datetime.ParseExactから正しい文字列を取得する方法です。DateTime

DateTime dt = DateTime.Now;
string dtStr = dt.ToString("dd/MM/yyyy hh:mm:ss tt"
                          , System.Globalization.CultureInfo.InvariantCulture);

結果:

08/02/2013 10:20:18 AM

ただし、データベースから例外が発生しているため、次のようになります。

先行ゼロが見つかりません[SQLクエリ構文が無効またはサポートされていません

実際にはパラメータを使用して、 !のDateTime代わりに渡す必要があります。string

于 2013-02-08T09:22:27.710 に答える