将前导零添加到时间

本文关键字:时间 添加 | 更新日期: 2023-09-27 18:27:47

在我的控制台应用程序中,我正在向文本文件写入它以以下小时格式执行的小时:

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

关于我该怎么解决这个问题,有什么建议吗?

谢谢。

将前导零添加到时间

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

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

请参阅:自定义日期和时间格式字符串