【问题标题】:Parse the string to take the date before putting each variable into datetime object在将每个变量放入日期时间对象之前解析字符串以获取日期
【发布时间】:2016-08-16 21:39:15
【问题描述】:

当我尝试执行附加代码时收到此警告。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace prueb2 {
   public partial class Acusado: Form {
       public Acusado() {
           InitializeComponent();
       }

       private void Acusado_Load(object sender, EventArgs e) {
           listView1.Items.Clear();
           List < ACUSADOcLAS > listaAcusado;

           try {
               listaAcusado = BD.GetAcusado();
               if (listaAcusado.Count > 0) {
                   ACUSADOcLAS acusado;
                   for (int i = 0; i < listaAcusado.Count; i++) {
                       acusado = listaAcusado[i];
                       listView1.Items[i].SubItems.Add(acusado.NumeroSeguroSocial.ToString());
                       listView1.Items[i].SubItems.Add(acusado.NombreAcusado);
                       listView1.Items[i].SubItems.Add(acusado.ApellidoPaternoAcusado);
                       listView1.Items[i].SubItems.Add(acusado.ApellidoMaternoAcusado);
                       listView1.Items[i].SubItems.Add(acusado.FechaNacimientoAcusado.ToString());

                       listView1.Items[i].SubItems.Add(acusado.GeneroAcusado);
                       listView1.Items[i].SubItems.Add(acusado.DireccionAcusado);
                       listView1.Items[i].SubItems.Add(acusado.NivelMaximoEstudiosAcusado);
                       listView1.Items[i].SubItems.Add(acusado.EtnicidadAcusado);
                       listView1.Items[i].SubItems.Add(acusado.ReligionAcusado);
                   }
               } else {
                   MessageBox.Show("No hay acusados", "Alerta");
               }
           } catch (Exception ex) {
               MessageBox.Show(ex.Message, ex.GetType().ToString());
           }
       }

       private void button1_Click(object sender, EventArgs e) {
           BD.AddAcusado(int.Parse(txtNumSeg.Text), txtNombreA.Text, txtApPat.Text, txtApMat.Text, DateTime.Parse(dateTimeFecha.Text), comboGenero.Text, txtDireccion.Text, comboEstudios.Text, txtEtnicidad.Text, txtReligion.Text);
           txtNumSeg.Text = "";
           txtNombreA.Text = "";
           txtApPat.Text = "";
           txtApMat.Text = "";
           dateTimeFecha.Text = "";
           comboGenero.Text = "";
           txtDireccion.Text = "";
           comboEstudios.Text = "";
           txtEtnicidad.Text = "";
           txtReligion.Text = "";
           this.Acusado_Load(this, null);
       }

   }
}

你能帮帮我吗?

【问题讨论】:

  • 您的DateTime 格式如何?
  • 每次单击按钮时都会清除日期:dateTimeFecha.Text = "";在单击按钮之前确保文本框包含日期

标签: c# string date parsing datetime


【解决方案1】:

由于日期字符串无效,您可能会遇到异常。您需要先验证它。

试试这个:

DateTime tempDateTimeFecha;
bool isValid = DateTime.TryParse(dateTimeFecha.Text, out tempDateTimeFecha);

现在如果isValid == true,您可以将tempDateTimeFecha 作为参数传递给BD.AddAcusado() 方法。

【讨论】:

    【解决方案2】:

    我在尝试解析我的 datagridview 的 Date 列时遇到了同样的问题。以下过程帮助我解决了它: 我检查了我的循环体并将循环终止的最大数量减少了 1。

        int days = 0;
        Datetime d;
        for (int i = 1; i < pastedCells -1; i++){ 
                d = Convert.ToDateTime(dgv_Copy.Rows[i].Cells[1].Value);
                days = DateTime.DaysInMonth(d.Year, d.Month);
                Console.WriteLine(days + "\t" + d);
           }
        //result:
        //31    2002-05-31 0:00
        //30    2002-11-30 0:00
        //31    2003-05-31 0:00
        //30    2003-06-30 0:00
        //31    2003-10-31 0:00
        //30    2003-11-30 0:00
        //29    2004-02-29 0:00
        //31    2004-10-31 0:00
    

    请注意:解析日期取决于格式(查看此https://docs.microsoft.com/en-us/dotnet/standard/base-types/parsing-datetime 了解更多信息。更重要的是,如果您的循环主体尝试传递 nullempty ,那么肯定会弹出错误。

    另外,请记住捕获异常,但不要在检查编码错误之后。

    【讨论】:

      猜你喜欢
      • 2014-12-16
      • 2021-06-10
      • 2010-12-15
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多