使用属性中的格式字符串

时间:2016-03-23 10:26:39

标签: c# c#-6.0

我所处的情况如下:

我有一个插值字符串,如下所示:

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

以及应该在其中使用的格式:

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

现在我想在插值字符串中使用属性Format 中的格式,但我不知道如何。

I.E:我喜欢这样的结果:

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

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:14)

试试这个:

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

答案 1 :(得分: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页面here

答案 2 :(得分:0)

最后,我将接受的答案留给了@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);