在我的控制台应用程序中,我正在使用以下小时格式执行的小时写入文本文件:
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());
}
}
关于我如何解决这个问题的任何建议?
感谢。
答案 0 :(得分:6)
而不是DateTime.Now.ToString("t")
使用自定义格式,如:
DateTime.Now.ToString("hh:mm tt");