2016-10-12 11 views
0

はい、私はこの質問で多くのトピックを知っています、私は検索し、それらの多くを見たが、私はまだ私の問題を解決することはできません。文字列が有効なDateTimeエラーとして認識されませんでした

ERROR:文字列は、私は別の形であるのDataGridViewからのデータを受信して​​い

が、私はそれを受信し、それがうまく表示できる有効な日時として認識されませんでしたが、今、私はひそかにしたいです日付形式のString形式のデータをdatetimepickers形式で表示します。私は、この行のエラーを取得します

public EditObras(string id, string NomeObra, string idCliente, string DataPLevantamento, string DataRLevantamento, string Estado, string DataRMateriais, string DataInicioObra, string DataConclusao, string DataVestoria, string Obs, string Prompor, string Levantpor, string executpor) 
     { 
      InitializeComponent(); 
      label4.Text = (string)id; 
      textBox1.Text = (string)NomeObra; 
      textBox2.Text = (string)idCliente; 
      dateTimePicker1.Value = DateTime.ParseExact(DataPLevantamento, "d' de 'MMMM' de 'yyyy", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None); 
      // textBox3.Text = (string)DataPLevantamento; 
      textBox4.Text = (string)DataRLevantamento; 
      comboBox1.Text = (string)Estado; 
      textBox5.Text = (string)DataRMateriais; 
      textBox6.Text = (string)DataInicioObra; 
      textBox7.Text = (string)DataConclusao; 
      textBox8.Text = (string)DataVestoria; 
      textBox12.Text = (string)Obs; 
      textBox9.Text = (string)Prompor; 
      textBox10.Text = (string)Levantpor; 
      textBox11.Text = (string)executpor; 
} 

:データを受信

dateTimePicker1.Value = DateTime.ParseExact(DataPLevantamento, "d' de 'MMMM' de 'yyyy", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None); 

"D 'デ・MMMM"ド' YYYY" 形式は、使用して1つのイムで、I DataPLevantamentoの

string datePattern = System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat.LongDatePattern; 
     textBox1.Text = datePattern; 

値がこのようなデータである:ちょうどフォーマットが何であるかを確認するために、この方法でフォーマットを得た

30 de outubro de 2016

例外スタック:

System.FormatException was unhandled 
    HResult=-2146233033 
    Message=A cadeia de caracteres não foi reconhecida como valor DateTime válido. 
    Source=mscorlib 
    StackTrace: 
     em System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style) 
     em System.DateTime.ParseExact(String s, String format, IFormatProvider provider, DateTimeStyles style) 
     em GestãodeobrasGasFenosa.EditObras..ctor(String id, String NomeObra, String idCliente, String DataPLevantamento, String DataRLevantamento, String Estado, String DataRMateriais, String DataInicioObra, String DataConclusao, String DataVestoria, String Obs, String Prompor, String Levantpor, String executpor) em C:\Users\BugDroid\Documents\Visual Studio 2015\Projects\GestãodeobrasGasFenosa\GestãodeobrasGasFenosa\EditObras.cs:line 26 
     em GestãodeobrasGasFenosa.Form1.dataGridView1_CellDoubleClick(Object sender, DataGridViewCellEventArgs e) em C:\Users\BugDroid\Documents\Visual Studio 2015\Projects\GestãodeobrasGasFenosa\GestãodeobrasGasFenosa\Form1.cs:line 606 
     em System.Windows.Forms.DataGridView.OnCellDoubleClick(DataGridViewCellEventArgs e) 
     em System.Windows.Forms.DataGridView.OnDoubleClick(EventArgs e) 
     em System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
     em System.Windows.Forms.Control.WndProc(Message& m) 
     em System.Windows.Forms.DataGridView.WndProc(Message& m) 
     em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
     em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
     em System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
     em System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 
     em System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) 
     em System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 
     em System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 
     em System.Windows.Forms.Application.Run(Form mainForm) 
     em GestãodeobrasGasFenosa.Program.Main() em C:\Users\BugDroid\Documents\Visual Studio 2015\Projects\GestãodeobrasGasFenosa\GestãodeobrasGasFenosa\Program.cs:line 19 
     em System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     em System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     em Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     em System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     em System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     em System.Threading.ThreadHelper.ThreadStart() 
    InnerException: 
+1

ここで、解析しようとしている*値は何ですか? –

+0

'DataPLevantamento'の文字列値を質問に追加し、' CultureInfo.CurrentCulture'の実際の値を教えてください。 DateTime.ParseExact( "Value of DataPLevantamento"、 "MMMM 'de' yyyy"、(CultureInfo.CurrentCultureの値)、DateTimeStyles.None)のコードが削除されている可能性がありますので、おそらくあなたのコードの約90%質問は文脈にかかわらず解決可能でなければならない。 – grek40

+0

あなたは何をDataPLevantamentoに渡していますか? あなたは@ LasseV.Karlsenさんの答えを知らなかったので、そこに文字列として渡すデータのサンプルを尋ねました。 また、そのコンストラクタにクラスを渡すことを検討する必要があります。 何かのように: public EditObras(Obras obra) –

答えて

0

これはあなたに等しくなるように、実際のCultureInfo CultureInfoニーズに起因してカスタムカルチャ

CultureInfo culture = new CultureInfo("pt-PT"); 
dateTimePicker1.Value = DateTime.ParseExact(DataPLevantamento, "d' de 'MMMM' de 'yyyy", 
         culture, System.Globalization.DateTimeStyles.None); 
+0

まだ同じエラーがあります。 – BugDroid777

+0

それは私の側からのエラー、それは働いた。ありがとう。 – BugDroid777

+0

thats素晴らしい幸せコーディング:) – Mostafiz

1

を使用して、この方法を試してみてください、 ので、あなたは新しいCultureInfo変数を作成する必要があります。

私はこの言語がポルトガル語であると推測しました。

string DataPLevantamento = "30 de outubro de 2016"; 
    var provider = new System.Globalization.CultureInfo("pt-PT"); 
    string result = DateTime.ParseExact(DataPLevantamento, 
         "d' de 'MMMM' de 'yyyy", 
         provider, 
         System.Globalization.DateTimeStyles.None).ToString(); 
    Console.WriteLine(result); 
+0

まだ同じエラーがあります。 – BugDroid777

+0

@ BugDroid777例外スタックトレースを送信できますか?これは、.NET Fiddleの作品として変わっています。 – jeuxjeux20

+0

投稿を追加しました。 – BugDroid777

関連する問題