Использовать строку форматирования из свойства

ситуация, в которой я находилась, следующая:

У меня есть интерполированная строка, выглядящая так:

DateTime DateOfSmth;
string PlaceOfSmth;
$"{DateOfSmth}, {PlaceOfSmth}".Trim(' ',',');

И формат, который должен использоваться на нем в:

string Format = "{0:dd.MM.yyyy}";

Теперь я хотел бы использовать формат в свойстве Format в интерполированной строке, но я не знаю, как это сделать.

I.E: Мне бы хотелось, чтобы в результате получилось следующее:

$"{DateOfSmth:Format}, {PlaceOfSmth}".Trim(' ',',');

Может ли кто-нибудь помочь?

Ответ 1

Попробуйте следующее:

string format = "dd.MM.yyyy";
Console.WriteLine($"{DateOfSmth.ToString(format)}");

Ответ 2

Изменить: это неправильный ответ на вопрос, но было бы полезно, если вы хотите отформатировать DateTime с помощью нужного форматирования даты и времени.

Если вы пытаетесь отформатировать тип DateTime, есть много способов сделать это, и я вижу, что лучший способ - использовать метод String.Format с специальными спецификаторами формата, которые связаны с датой и временем (например, y за год, M за месяц и d за день), чем вы можете сохранить это значение в переменной и использовать его в любом месте.

Это рабочий пример:

DateTime currentDate = new DateTime(2015, 3, 23, 12, 40, 5, 112);

String.Format("{0:y yy yyy yyyy}", currentDate );  // result -> "15 15 015 2015"  
String.Format("{0:M MM MMM MMMM}", currentDate );  // result -> "3 03 Mar March" 

Также вы можете использовать спецификаторы стандартного формата, например:

t для "ShortTimePattern", который приведет к (h: mm tt).

d для "ShortDatePattern", который приведет к (M/d/yyyy).

t для "LongTimePattern", который приведет (h: mm: ss tt).

d для "LongDatePattern", который приведет к (dddd, MMMM dd, yyyy).

Это рабочий пример:

String.Format("{0:t}", currentDate);  // result -> "12:40 PM"   ShortTime
String.Format("{0:d}", currentDate);  // result -> "3/23/2015"   ShortDate
String.Format("{0:T}", currentDate);  // result -> "12:40:05 PM"   LongTime
String.Format("{0:D}", currentDate);  // result -> "Wednesday, March 23, 2015"   LongDate

Полную ссылку см. на странице MSDN здесь.

Ответ 3

В конце я оставил принятый ответ на @diiN_. Используемое решение:

//this format is given and I can't change it
string Format = "{0:dd.MM.yyyy}";
DateTime? Date = DateTime.Today;
string Place = "Washington";

string.Format(Format + ", {1}", Date, Place);