C# winforms 中的日期时间

实际上我正在使用 .CSV 文件。我已将 .CSV 文件的所有数据放入 DataTable 中。代码如下:


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Globalization;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;


namespace Revision1

{

    public partial class Form1 : Form

    {

        DataTable datable = new DataTable();

        public Form1()

        {

            InitializeComponent();

        }


        private void browsebtn_Click(object sender, EventArgs e)

        {

            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Title = "Select .CSV ffile";

            ofd.ShowDialog();

            txtboxpath.Text = ofd.FileName;

        }


        private void operatebtn_Click(object sender, EventArgs e)

        {

            string filePath = txtboxpath.Text;

            StreamReader sr = new StreamReader(filePath);

            string line = sr.ReadLine();

            string[] value = line.Split(',');


            DataRow row;

            foreach (string dc in value)

            {

                datable.Columns.Add(new DataColumn(dc));

            }

            while (!sr.EndOfStream)

            {

                value = sr.ReadLine().Split(',');

                if (value.Length == datable.Columns.Count)

                {

                    row = datable.NewRow();

                    row.ItemArray = value;

                    datable.Rows.Add(row);

                }

            }





        }


        private void generatecsvbtn_Click(object sender, EventArgs e)

        {


        }


    }

}

到现在一切都很好。.CSV 文件的 google drive 链接点击 for.csv 文件


现在我正在检查以下条件,该条件也在最后一次 while 循环后的操作中:


DateTime dt = DateTime.ParseExact(datable.Rows[0][1].ToString(),"dd-MM-yy HH:ss", CultureInfo.InvariantCulture);

string s = dt.ToString();

string s1 = datable.Rows[0][1].ToString();

if(s==s1)

{

                //code here

}

但是条件给出了错误的值。我如何修改我的代码以便条件为真?当我通过断点调试时,我得到以下值:


dt = 11/30/2017 10:00:00 AM

s = 30-NOV-2017 10:00:00 AM

s1 = 30-11-2017 10:00


呼啦一阵风
浏览 225回答 2
2回答

皈依舞

您的问题与 CSV 文件或数据表无关。您正在将string具有确切特定格式的 a解析为DateTime. 然后您将其转换DateTime回 astring但没有特定格式信息,因此转换使用区域性的默认格式DateTime将string.如果要获得相同的结果,请在调用时使用相同的格式ToString:string s = dt.ToString("dd-MM-yy HH:ss");

qq_遁去的一_1

您应该转换所有要比较的字符串DateTimes并进行比较。毕竟你想比较日期,而不是文本。该DateTime结构本身并不存储日期为格式,因此在这方面中性。根据原始文档此属性的值表示自 0001 年 1 月 1 日午夜 12:00:00(公历中 0001 年 1 月 1 日 UTC 时间 0:00:00)以来经过的 100 纳秒间隔数 [... ]
打开App,查看更多内容
随时随地看视频慕课网APP