添加前导零时间

时间:2014-10-23 19:10:59

标签: 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:成功了   上午8:09:成功了   上午9:09:成功了   上午10:09:成功   上午11:09:成功了   下午12:09:成功了   下午1:09:成功了   下午2:09:成功了   下午3:18:成功了   下午4:09:成功了   下午5:09:成功了   下午6:09:成功

我想要修复的是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());
        }

    }

关于我如何解决这个问题的任何建议?

感谢。

1 个答案:

答案 0 :(得分:6)

而不是DateTime.Now.ToString("t")使用自定义格式,如:

DateTime.Now.ToString("hh:mm tt");

请参阅:Custom Date and Time Format Strings