我有一个用C#编写的类库,用于将错误和其他信息写入文本或日志文件。问题是它在将文本写入文件时正在改变文本。它由vb.net应用程序调用。
应该写的文字: 02-20-2017 08:17:42 - Personality Update() beginning:
实际撰写的文字: 02-20-2017 08:17:42 - Per42onaliA17 Up20aAe() beA.D.inninA.D.:
下面是调用该方法来写出字符串的代码。
errHandler.AddLineToLogFile(Me.MasterLogFileName, "Personality Update() beginning:")
以下是被调用的方法。
public void AddLineToLogFile(string logFile, string message, bool replaceExistingFile = false)
{
DateTime now = DateTime.Now;
using (StreamWriter writer = new StreamWriter(logFile, !replaceExistingFile))
{
writer.WriteLine(now.ToString("MM-dd-yyyy HH:mm:ss - " + message));
writer.WriteLine(" ");
}
}
有人可以帮我解决这个问题吗?
答案 0 :(得分:9)
您将邮件作为日期格式的一部分传递。与已知格式匹配的部分将替换为now
中的值。添加后格式化DateTime
:
now.ToString("MM-dd-yyyy HH:mm:ss") + " - " + message
s
=第二个(42
)t
= AM / PM指示符的第一个字符(A
)y
=年份,从0到99(17
)d
=当天(20
)g
=句号或时代(A.D.
)这就是为什么
MM - dd - yyyy HH : mm : ss - 每 s onali ty 上 d t e() g 强> innin的克强>:
成为
02-20-2017 08:17:42 - Per42onaliA17 Up20aAe()beA.D.inninA.D。:
可以找到here on MSDN
的完整自定义日期格式列表答案 1 :(得分:4)
您正在将now
转换为字符串,而您的其他文本则位于ToString
方法内。
分开这两个,它应该没问题。
writer.WriteLine(now.ToString("MM-dd-yyyy HH:mm:ss") + " - " + message);
答案 2 :(得分:2)
尝试
DateTime now = DateTime.Now;
using (StreamWriter writer = new StreamWriter(logFile, !replaceExistingFile))
{
writer.WriteLine(now.ToString("MM-dd-yyyy HH:mm:ss") + "- " + message);
writer.WriteLine(" ");
}