2

私はc#のコードの下にあり、文字列型の形式の日付を日時に変換していますが、エラーが発生します。

if (!string.IsNullOrEmpty(SessionDictionary.GetValue("UserDetails", "ExpiryDate")))
{
    DateTime ExpiryDate = DateTime.ParseExact(SessionDictionary.GetValue("UserDetails", "ExpiryDate"), "dd mmm yy", null);                      
    strDate = sitedata.FormatDate(ExpiryDate, TridionDateFormat.ShortDate);
}
else
{
    strDate = "-";
}

SessionDictionary.GetValue("UserDetails", "ExpiryDate")は文字列型のデータで、「31/01/2011 00:00:00」形式の日付を返します。上記のコードで使用しDateTime.ParseExactていると、System.FormatException: String was not recognized as a valid DateTime.エラーが発生します。

何が悪いのか提案してください。

ありがとう。

4

4 に答える 4

5

あなたが説明するサンプル日付 (31/01/2011 00:00:00) は dd/MM/YYYY HH:mm:ss の形式のように見えますが、なぜ dd mmm yyyy を使用しているのですか?

試す

DateTime.ParseExact(..., "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);

hh (12 時間制) ではなく HH (24 時間制) の使用と、一部のカルチャではスラッシュ以外の区切り記号が使用されるため、InvariantCulture の使用に注意してください。

たとえば、カルチャが de-DE の場合、"dd/MM/yyyy" の形式では区切り記号としてピリオドが必要になります (31.01.2011)。

于 2011-02-16T06:58:15.200 に答える
1

おそらくmmm (そのような月の形式はありません)のため、代わりにMMMを試してください(Feb/Jan/etc のように見えます)。

于 2011-02-16T06:50:03.923 に答える
1

日付の解析に間違った形式を使用しています。正しいものは次のとおりです。

DateTime ExpiryDate = DateTime.ParseExact(SessionDictionary.GetValue("UserDetails", "ExpiryDate"), "dd/MM/yyyy hh:mm:ss", null)

また、システムの日付形式が に設定されてdd/MM/yyyyいる場合は、次を使用できます。

DateTime ExpiryDate = DateTime.ParseExact(SessionDictionary.GetValue("UserDetails", "ExpiryDate"), "G", null)
于 2011-02-16T06:55:00.257 に答える
0

試す DateTime ExpiryDate = DateTime.ParseExact(SessionDictionary.GetValue("UserDetails", "ExpiryDate"), "g", null);

またはここを参照してください: http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

于 2011-02-16T06:57:24.417 に答える