我的问题是我正在尝试生成文本文件以通过我的程序发送电子邮件。程序在sql表中搜索date firstname lastname和其他一些列,当然还要将日期和时间写入文件。我只想在文本文件中写日期而不是日期和时间。
正在使用的逻辑: 1.从sql查询数据 2.将数据插入数据集 3.从数据集创建数据表 4.将数据表写入txt文件
这就是它被写入文本文件的方式
1/20/2014 12:00:00 AM | 76770 | 1/1/1900 12:00:00 AM | 0.0000 |
1/28/2014 12:00:00 AM | 74000 | 1/1/1900 12:00:00 AM | 0.0000 |
1/20/2014 12:00:00 AM | 76770 | 2/19/2014 1:02:47 PM | 28.5600 |
1/28/2014 12:00:00 AM | 74000 | 2/24/2014 11:50:32 AM | 7.0000 |
使用此代码:
public void writeData(StreamWriter sw, DataTable data)
{
int i;
sw.Write(Environment.NewLine);
foreach (DataRow row in data.Rows)
{
object[] array = row.ItemArray;
for (i = 0; i < array.Length - 1; i++)
{
sw.Write(array[i] + "\t | ");
}
sw.WriteLine(array[i]);
}
sw.Write(Environment.NewLine + "*****END OF DATA****" + Environment.NewLine + "Retrieved: " + DateTime.Now.ToString());
dataGridView1.DataSource = finalTable;
}
我希望它在txt文件中看起来像这样
1/20/2014 | 76770 | 1/1/1900 | 0.0000 |
1/28/2014 | 74000 | 1/1/1900 | 0.0000 |
1/20/2014 | 76770 | 2/19/2014 | 28.5600 |
1/28/2014 | 74000 | 2014年2月24日| 7.0000 |
有没有办法缩短这样的日期?
答案 0 :(得分:0)
您可以尝试这一点 - 我还添加了一个案例,将任何decimal
值格式化为货币格式。
foreach (DataRow row in data.Rows)
{
for (i = 0; i < row.ItemArray.Length; i++)
{
if ( row.Table.Columns[i].DataType == typeof(System.DateTime))
sw.Write( ((DateTime)(row.ItemArray[i])).ToString("dd/MM/yyyy") + "\t | ");
else if ( row.Table.Columns[i].DataType == typeof(System.Decimal))
sw.Write( ((decimal)(row.ItemArray[i])).ToString("C") + "\t | ");
else
sw.Write(row.ItemArray[i] + "\t | ");
}
sw.WriteLine();
}