我尝试使用此代码将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++;
}
答案 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);