3

以下の文字列をに変換できますかDateTime

2013 年 9 月 27 日金曜日

これは私が達成したいものです:

String tmpDate="Friday, 27th September 2013";
closingDate = Convert.ToDateTime(tmpDate).ToString("yyyy-MM-dd");

上記を実行すると、エラーが発生します:

文字列は有効な DateTime として認識されませんでした。インデックス 10 から始まる未知の単語があります。

4

6 に答える 6

2

このような配列で削除する序数を維持できます (これにより、他の言語からの序数の追加/削除が容易になる場合があります)。そうすれば、各文字列入力から序数を手動で削除する必要がなくなります。を使用すると、文字列から を解析できなかっTryParseExactた場合にスローされる例外が回避されます。DateTime

String tmpDate = "Friday, 27th September 2013";
string[] split = tmpDate.Split();
string[] ordinals = new string[] { "th", "nd", "st" };

foreach (string ord in ordinals)
   split[1] = split[1].Replace(ord, "");

tmpDate = String.Join(" ", split);
DateTime dt;
if(DateTime.TryParseExact(tmpDate, "dddd, dd MMMM yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
{
   Console.WriteLine("Parsed");
}
else
{
   Console.WriteLine("Could not parse");
}
于 2013-08-29T11:54:08.247 に答える
1

あなたの答えは、あなたが得ている例外にあります。明らかに、「th」はここでは必要ありません。取り外すだけで準備完了です。

これは私にとって完全にうまく機能しています

String tmpDate = "Friday, 27 September 2013";
closingDate = Convert.ToDateTime(tmpDate).ToString("yyyy-MM-dd");
于 2013-08-29T11:44:01.500 に答える
0

これらを考慮した形式がないため、th、nd、rd、および st を手動で削除する必要があります。その後、以下のように正確に解析してみてください

String tmpDate = "Friday, 27th September 2013";
tmpDate = tmpDate.Replace("nd", "")
            .Replace("th", "")
            .Replace("rd", "")
            .Replace("st", "");            
string[] formats = { "dddd, dd MMMM yyyy" };
DateTime dt;
if (DateTime.TryParseExact(tmpDate, formats, CultureInfo.InvariantCulture, DateTimeStyles.NoCurrentDateDefault, out dt))
{
     //parsing is successful
}
于 2013-08-29T11:51:36.730 に答える
-2

http://msdn.microsoft.com/en-us/library/system.datetime.parse.aspxを参照して ください。

public class Example
{
public static void Main()
{
  string[] dateStrings = {"2008-05-01T07:34:42-5:00", 
                          "2008-05-01 7:34:42Z", 
                          "Thu, 01 May 2008 07:34:42 GMT"};
  foreach (string dateString in dateStrings)
  {
     DateTime convertedDate = DateTime.Parse(dateString);
     Console.WriteLine("Converted {0} to {1} time {2}", 
                       dateString, 
                       convertedDate.Kind.ToString(), 
                       convertedDate);
  }                              
}
}
于 2013-08-29T11:41:51.260 に答える