繁体   English   中英

在将每个变量放入 datetime 对象之前解析字符串以获取日期

[英]Parse the string to take the date before putting each variable into datetime object

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

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 tempDateTimeFecha;
bool isValid = DateTime.TryParse(dateTimeFecha.Text, out tempDateTimeFecha);

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

我在尝试解析 datagridview 的日期列时遇到了同样的问题。 以下过程帮助我解决了这个问题:我检查了我的循环体并将循环终止的最大数量减少了 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 ,那么它肯定会弹出错误。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM