文字列をDateTimeオブジェクトに変換したい。文字列は「2016年7月18日」の形式で表示されます(日付は変更可能)。明らかに、.Netはこれを有効な日付形式とみなしません。サードパーティライブラリを使用せずにこれを変換する簡単な方法はありますか?DateTimeに変換
答えて
それが問題になる可能性があるので、私はString.Replace
を使用していないだろうが、現在の文化の月名を使用して、交換するつもりだ文字列が含まれています。
代わりに、文字列からこの部分を削除することができます:あなたは、現在のカルチャのdatetimeformatが使用されているTryParseExact
するIFormatProvider
としてnull
を渡すと
string input = "18th Jul 2016";
string[] token = input.Split(); // split by space, result is a string[] with three tokens
token[0] = new string(token[0].TakeWhile(char.IsDigit).ToArray());
input = String.Join(" ", token);
DateTime dt;
if(DateTime.TryParseExact(input, "dd MMM yyyy", null, DateTimeStyles.None, out dt))
{
Console.WriteLine("Date is: " + dt.ToLongDateString());
}
。あなたが英語の名前を強制的に使用したい場合は、CultureInfo.InvariantCulture
を渡すことができます。
'CultureInfo.CurrentCulture'よりも優れている方が、' CultureInfo.InvariantCulture'を使う方がいいです。 –
@Ghasan:英語名を強制したいときには良くないが_correct_;)修正をありがとう –
回避策:
string dateStr = "18th Jul 2016";
dateStr = dateStr.Replace("th", "").Replace("st", "").Replace("rd", "").Replace("nd", "");
DateTime date;
if (DateTime.TryParseExact(dateStr, "dd MMM yyyy", CultureInfo.CurrentCulture,
DateTimeStyles.AssumeLocal, out date))
{
}
else
{
// error
}
"nd"を忘れないでください – LordWilmore
置き換えアプローチはローカライゼーションの問題を抱えており、いくつかの国では 'st'、' nd'、 'th'または月の名前に 'rd'を付けます。 –
私のコードは、ローカライゼーションの問題が予想されない内部マシン上で実行されるはずで、入力は常にこの形式になりますので、この解決策はうまくいきます。手伝ってくれてありがとう! –
そのファッジのビットが、
string result = System.Text.RegularExpressions.Regex.Replace(dt, "[st|th|nd|rd]{2} ", " ", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
DateTime d = DateTime.Parse(result);
それは数ヶ月を編集してみてくださいdoesntのように、私はスペースを含ま..私は[0-9] {1,2}から始めとに置き換えるました数は、それはやり過ぎ
string dateString = "18th Jul 2016";
dateString = Regex.Replace(dateString, @"^(\d{2})(st|nd|rd|th)", "$1");
var result = DateTime.ParseExact(dateString, "dd MMM yyyy", CultureInfo.InvariantCulture);
- 1. MySQL DateTimeに変換
- 2. SQL DateTimeをJavaに変換
- 3. VARCHARからDATETIMEに変換
- 4. 正しいDateTimeに変換
- 5. XSLT変換のdatetime
- 6. XSLTのDateTime変換
- 7. Crystal Report DateTime変換
- 8. C#DateTime変換からSting dd/MM/yyyyをDateTime MM/dd/yyyyに変換する
- 9. Pythonのdatetime型の変換
- 10. のDataTable変換行のdatetime
- 11. C#MySQL LINQ DateTime変換
- 12. SQLデータ変換は、DateTimeの
- 13. PowerShell v2.0 - DateTimeへの変換
- 14. DateTime形式の変換
- 15. datetimeオブジェクトを変換する
- 16. SQL Serverのdatetime変換
- 17. sql datetime形式の変換
- 18. パンダ - datetimeへの変換
- 19. DateTime変換エラー - Excel to SQL
- 20. DBクエリ用のDateTime変換
- 21. DateTime文字列変換エラー
- 22. Ecto.DateTimeとDateTimeの変換
- 23. java.sql.TimestampをDateTimeに変換するには?
- 24. datetime-formatをRFC1123からDateTime-Objectに変換します。
- 25. mysql datetimeからcoldfusion datetimeに変換する
- 26. 正しいオフセットのUTC DateTimeをEST DateTimeに変換する
- 27. ExcelのDateTime形式をDateTime Pandasに変換する
- 28. MySQL datetime値をgoogle chart api datetimeに変換する方法
- 29. DateTimeをSQL ServerからC#DateTimeに変換できません
- 30. C#datetimeをWCF datetime形式に変換する
あなたは[ 'DateTime.ParseExact()'](https://msdn.microsoft.com/en-us/library/w2sa9yss(V =対をチェックアウトしましたように見えました。 110).aspx)メソッド? – Sidewinder94
動作しませんでした。 –
関連:http://stackoverflow.com/q/2058639/447156 –