2017-08-29 5 views
-1

DateTime.Nowオブジェクトをカルチャ( "ar-EG")からカルチャ( "en-us" 「)私はそれが正常に動作コードstring cnow = DateTime.Now.ToString(new CultureInfo("en-US"));のこの部分を使用して[ص/م]時間短縮形を取り除くために。しかし、このコードDateTime dt = DateTime.Parse(cnow)を使用してバックDateTimeオブジェクトに変換しようとしたとき、私は、この例外DateTime.Nowを "ar-EG"から "en-US"に変換してص/ time時刻の省略を避ける

を取得文字列が有効なDateTimeとして認識されませんでした

これがなぜ発生するのかわかりません。この場合、この変換をどのように行うのですか?

- 更新 -

私は上記のように二つの異なる文化を持つ2つの異なる日付の間のTimeSpanを取得しようとしているとして、この変換を行う必要があります。

- 更新2 -

私のアプリケーションは、多くの異なる文化で実行すると、データベースにこれらの日付を挿入するときにエラーが生じますので、この変換の必要がある

+0

「DateTime」には、01/01/0001の開始時の深夜から発生した100ns間隔の数が格納されます。 *任意の*文字列は含まれません。 'DateTime.Now'は2つの異なるスレッドから正確に同じ2つの異なるカルチャを使用して呼び出され、2つの同じ*値を返します。 –

+0

Re:あなたの更新、いいえ、彼らはまったく文化を覚えていません。私が言ったように、それは[01/01/0001以降のチックの数](https://referencesource.microsoft.com/#mscorlib/system/datetime.cs,130)です。これは、 'Kind'プロパティを実装するための上位ビットのカップルを持つ、単一インスタンスのUInt64です。あなたの問題が何であれ、2つの 'DateTime'オブジェクトを使って作業しているのであれば、書式や文化の問題ではありません。 –

+0

' en-US'カルチャで文字列を作成しましたが、_expect_で 'ar-EG' (少なくとも私はそれがあなたの 'CurrentCulture'だったと仮定します)。あなたはここで何が_ワロングなのか見ていますか? –

答えて

0

私はちょうど私が代わりにこのラインを使用して、Windowsの現在のカルチャに頼るの特定の文化に取り組むために私の全体のアプリケーションを強制する、手がかりを見つけました

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
0

the DateTime.Parse overload that also takes an IFormatProviderCultureInfoIFormatProviderを実装)を使用してください。それ以外の場合は、現在のカルチャが解析に使用されます。

あなたは私はあなたが問題を解決するために助けを願って、これを使用することができ
+0

文字列への変換は無意味なダンスです - もしそれが正常に 'DateTime'に変換され、何の情報も失われないならば、開始されたのと全く同じ値が出力になります。 –

関連する問題