DateTime in 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文件点击.CSV文件

现在我正在检查以下条件,该条件也在最后一个while循环后的operatebtn_Click方法中:

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

您的问题与CSV文件或数据表无关。

您正在将具有确切特定格式的string解析为DateTime。然后将该DateTime转换回string,但没有特定的格式信息,因此转换使用区域性的默认格式将DateTime格式化为string

如果您想获得相同的结果,请在调用ToString:时使用相同的格式

string s = dt.ToString("dd-MM-yy HH:ss");

您应该将所有要与DateTimes进行比较的字符串转换并进行比较。毕竟,你想比较日期,而不是文本。DateTime结构本身不按格式存储日期,因此在这方面是中立的。根据原始文件

此属性的值表示自0001年1月1日午夜12:00:00(公历1月1日UTC 0:00:00(以来经过的100纳秒间隔数[…]

最新更新