我想知道这是否可能,如果可行,如何实现它。
我知道String.Format
函数允许您为参数指定格式,如下所示:
String.Format("The Date is {0:yyyy-MM-dd}", DateTime.Now);
但我想知道以所需格式提供的最佳方式(例如,#y; yyyy-MM-dd")最终会得到一个如下工作的功能(不起作用,但是显示了我想要完成的事情:
static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd")
{
return String.Format("{0} - {1:{2}}", filename, DateTime.Now, DateTimeFormat);
}
我想我可以先放一个假的占位符,先做一个String.Replace
:
string formatString = "{0} - {1:{FMT}}";
formatString = formatString.Replace("{FMT}", DateTimeFormat);
但我很想知道是否有更好的方法来完成我想要做的事情。
谢谢!
答案 0 :(得分:6)
您可以使用:
var format = "yyyy-MM-dd";
var dateTimeString = string.Format("{0}", DateTime.Now.ToString(format));
所以你的功能将成为:
static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd")
{
return String.Format("{0} - {1}", filename, DateTime.Now.ToString(DateTimeFormat));
}
答案 1 :(得分:2)
你可以试试这个:
static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd")
{
return String.Format("{0} - {1}", filename, DateTime.Now.ToString(DateTimeFormat));
}
同样在 Visual Studio 2015 中,您可以使用$
更简单地完成。
static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd")
{
return $"{filename} - {DateTime.Now.ToString(DateTimeFormat)}";
}
更简单(使用Expression主体):
static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd")
=> $"{filename} - {DateTime.Now.ToString(DateTimeFormat)}";
答案 2 :(得分:0)
这很简单,首先是格式化本身
string CreateFileName(string filename, string dateTimeFormat = "yyyy-MM-dd")
{
var format = string.Format("\{0\} - \{1:{0}\}", dateTimeFormat);
return string.Format(format, filename, DateTime.Now);
}
答案 3 :(得分:0)
你可以随时
return String.Format(new StringBuilder("{0} - {1:").Append(DateTimeFormat).Append("}").ToString(),
filename, DateTime.Now);
...如果你想把它保持在一行。