String.Format无法按预期工作C#

时间:2019-05-24 12:50:05

标签: c#

我正在尝试这样格式化文件内容:

0126252019-05-06 14:47:06 1098500020

但是每次我得到这个结果:

01262524. 5. 2019. 14:47:08 1098500020

显然日期和时间的格式不符合我的要求。

这是我的代码:

StreamWriter file = new System.IO.StreamWriter("C:\\MyMainFolder\\MyFilesFolder\\" + 15050 + ".flr");
file.WriteLine(12625.ToString("D6") + string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now + " " + 1098500020));
file.Close();

我在撰写时尝试格式化DateTime.Now

string.Format("{0:yyyy-MM-dd HH:mm:ss}"

但是看起来不起作用

谢谢大家

干杯!

3 个答案:

答案 0 :(得分:3)

问题在于,+在以下表达式中被应用为字符串连接:

string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now + " " + 1098500020);
//                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//                         C# makes this one string, and passes it for formatting.

将您打算在格式字符串中进行的串联移动将解决此问题:

string.Format("{0:yyyy-MM-dd HH:mm:ss} 1098500020", DateTime.Now);

答案 1 :(得分:3)

您正在将DateTime.Now + " " + 1098500020传递到string.Format,而该)不会由您指定的格式字符串进行解析。要解决此问题,您应该移动string.Format

但是,您应该使用var someInteger = 12625; var line = $"{someInteger:D6}{DateTime.Now:yyyy-MM-dd HH:mm:ss} 1098500020"; 创建整个字符串,包括前缀,,或者为更清晰的代码使用string interpolation,例如:

google drive

答案 2 :(得分:0)

考虑使用

string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)  + " " + 1098500020

仅将日期传递为字符串格式