C#在数据表中将日期格式从dd / MM / yy更改为dd / MM / yyyy

时间:2017-05-17 13:07:27

标签: c# linq

我尝试使用此代码将dd / MM / yy转换为dd / MM / yyyy:

int i = 0;
string d = "";

foreach(DataRow dr in dataset.Tables["FinData"].Rows)

{
    d = DateTime.ParseExact(dr["Date"], "dd/MM/yy", CultureInfo.InvariantCulture);
    dataset.Tables[0].Rows[i]["date"] = d;
    i++; 
}

但似乎我的datetime.parseexact用法存在问题。

如何修改它?

以下是完整的编码:

DateTimeFormatInfo formatProvider = new DateTimeFormatInfo();
formatProvider.Calendar.TwoDigitYearMax = DateTime.Now.Year;

label1.Text = fbd.SelectedPath;

Uri url = new Uri(@"http://www.google.com/finance/historical?q=KRX%3A005930&ei=-gUcWcG4Aom_0AS2sKyoBg&start=30&num=30&output=csv");

wc.DownloadFile(url, label1.Text + @"\finance.csv");
FileStream fs = new FileStream(label1.Text + @"\finance.csv", FileMode.Open);
StreamReader sr = new StreamReader(fs);
DataSet dataset = new DataSet();
dataset.Tables.Add("FinData");
dataset.Tables["FinData"].Columns.Add("Date");
dataset.Tables["FinData"].Columns.Add("Open");
dataset.Tables["FinData"].Columns.Add("High");
dataset.Tables["FinData"].Columns.Add("Low");
dataset.Tables["FinData"].Columns.Add("Close");
dataset.Tables["FinData"].Columns.Add("Volume");

string item;

while ((item = sr.ReadLine()) != null)

{
    myArr = item.Split(',');
    dataset.Tables["FinData"].Rows.Add(myArr);
}

int i = 0;
string d = "";

foreach(DataRow dr in dataset.Tables["FinData"].Rows)

{
    d = DateTime.ParseExact(dr["Date"], "dd/MM/yy", CultureInfo.InvariantCulture);
    dataset.Tables[0].Rows[i]["date"] = d;
    i++; 
}

3 个答案:

答案 0 :(得分:0)

您可以使用ToFourDigitYear方法将YY转换为YYYY

        string strDate = "31/12/17";
        System.Globalization.GregorianCalendar gregCal = new System.Globalization.GregorianCalendar();
        DateTime dtDate = new DateTime(gregCal.ToFourDigitYear(Convert.ToInt32(strDate.Substring(6, 2))), Convert.ToInt32(strDate.Substring(3, 2)), Convert.ToInt32(strDate.Substring(0, 2)));

答案 1 :(得分:0)

使用

Convert.ToDateTime(dataset.Tables[0].Rows[i]["DATE"]).ToString("dd/MM/yyyy");

在我看来,这里已有答案:Convert datatable date into dd/mm/yyyy format in asp.net

答案 2 :(得分:0)

您的csv文件(您提供了半加密链接)包含“28-Mar-17”等日期。即使DateTime.ParseExact对您而言是新的,也不难从其名称推断它根据给定的格式解析日期字符串 ,这不是“dd / MM / YY”。所以这是如何使用它:

d = DateTime.ParseExact(dr["Date"], "dd-MMM-yy", CultureInfo.InvariantCulture);