写入文本文件时C#格式化sql表日期列输出

时间:2016-10-07 21:26:43

标签: c# datetime streamwriter

我的问题是我正在尝试生成文本文件以通过我的程序发送电子邮件。程序在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 |

有没有办法缩短这样的日期?

1 个答案:

答案 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();
}