2015-07-30 5 views
0

Мне интересно, возможно ли это, и если да, то как это сделать.C# String.Format - Подача в пользовательском формате

Я знаю, что функция String.Format позволяет задать формат для параметра следующим образом, например:

String.Format("The Date is {0:yyyy-MM-dd}", DateTime.Now); 

Но я хотел бы знать, лучший способ накормить в нужном формате (для exmaple " гггг-ММ-дд "), чтобы в конечном итоге с функцией, которая будет работать следующим образом (не работает, но показывает, что я пытаюсь выполнить):

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

Я думаю, вам нужно отформатировать 'DateTime.Now' с' DateTimeFormat', и вы можете указать их в 'string.Format' - это другая строка. –

ответ

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)); 
} 
+0

@artm: Спасибо, что установил мой пропущенный « –

+0

Это PERFECT !!! - Спасибо !!!! –

+0

@WilliamMoore Я просматриваю SO весь день ищет пропавших без вести», хорошо, чтобы получить признание :) – artm

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

И еще проще (с экспрессией тела):

static string CreateFileName(string filename, string DateTimeFormat = "yyyy-MM-dd") 
      => $"{filename} - {DateTime.Now.ToString(DateTimeFormat)}"; 
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); 
} 
0

Вы всегда можете сделать

return String.Format(new StringBuilder("{0} - {1:").Append(DateTimeFormat).Append("}").ToString(), 
        filename, DateTime.Now); 

. .. Если вы хотите сохранить его в одной строке.