smr*_*mr5 -1 c# text console-application
在我的控制台应用程序中,我正在使用以下小时格式执行的小时写入文本文件:
DateTime.Now.ToString("t")
但是,此格式不包含前导零.创建文本文件后,我阅读它,然后发送包含内容的电子邮件.
string x = DateTime.Now.ToString("hh");
Logs.writeSummary(DateTime.Now.ToString("t"), "Succeeded",x);
例如,在生成文本文件后,它的外观如下:
上午6:09:成功
7:09 AM:成功
上午8:09:成功
上午9:09:成功
上午10:09:成功
上午11:09:成功
12:09 PM:成功
1:09 PM:成功
2: 09 PM:成功
3:18 PM:成功
4:09 PM:成功
5:09 PM:成功
6:09 PM:成功
我想要解决的是所有人都Succeeded应该对齐.
我采取的第一种方法是找到一种方法来添加一个leading zero,它将解决我的问题.但它没有成功.所以我采取了不同的方法.
我将当前小时hh作为参数的格式传递给函数,如果当前小时不是,10, 11, 12那么我space在小时之前添加一个.
 public static void writeSummary(string dt, string msg, string f)
    {
        string filePath = @"C:\Logs\summary.txt";
        string _dt = dt.ToString();
        string _msg = msg;
        string _f = f;
        using (StreamWriter writer = new StreamWriter(filePath, true))
        {
            if (_f == "10" || _f == "11" || _f == "12")
            {
                writer.WriteLine(_dt + ":" + _msg);
            }
            else
            {
                writer.WriteLine(" "+ _dt + ":" + _msg);
            }
        }
    }
这解决了文本文件中的问题.然而,当我阅读并发送电子邮件时,一切都是一致的,我会丢失space并最终发布上面发布的未对齐文本.
public static void readSummary()
    {
        try
        {
            using (StreamReader sr = new StreamReader(@"C:\Logs\summary.txt"))
            {
                String line = sr.ReadToEnd();
                Console.WriteLine(line);
               //send email using line
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
    }
关于如何解决这个问题的任何建议?
谢谢.
而不是DateTime.Now.ToString("t")使用自定义格式,如:
DateTime.Now.ToString("hh:mm tt");
请参阅:自定义日期和时间格式字符串