Форматирам дата:
str = String.Format("{0:MMM d m:mm"+yearStr+"}", dt);
Искам да сложа думата "at" след "d", но не искам низът да го форматира. Просто искам думата "в".
Как мога да постигна това?
Форматирам дата:
str = String.Format("{0:MMM d m:mm"+yearStr+"}", dt);
Искам да сложа думата "at" след "d", но не искам низът да го форматира. Просто искам думата "в".
Как мога да постигна това?
Можете да оградите буквалните низове с кавички, което за по-дълги низове вероятно е по-лесно и малко по-четливо, отколкото да избягвате всеки знак с обратна наклонена черта:
str = String.Format("{0:MMM d 'at' m:mm"+yearStr+"}", dt);
Вижте Персонализирани низове за формат на дата и час в библиотеката на MSDN (потърсете „Literal“ разделител на низове").
(И имахте предвид h:mm
вместо m:mm
?)
H:mm
с главно H
?)
- person Jeppe Stig Nielsen; 31.03.2013
string.Format(@"{0:MMM d \a\t m:mm" + yearStr + "}", dt);
Обърнете внимание на двойното екраниране - използвах низ varbatim, така че успях да напиша \
вътре в низа като нормален знак. След това рутината за форматиране за DateTime
интерпретира това (отново) като последователност за изход.
Ето един по-прост вариант:
string.Format("{0:MMM d} at {0:m:mm" + yearStr + "}", dt);
Първият вариант може да се сметне за отвратителен от някои. Последното обаче е много ясно за четене.
string str = String.Format("{0:MMM} at {1:d m:mm"+yearStr+"}", dt, dt);
, но мисля, че твоят е по-добър.
- person Steve; 31.03.2013
Просто за забавление, но работи.
var what=new object[] { "{{{{0:MMM d}}}} {0} {{{{0:m:mm:{{0}}}}}}", "at", yearStr, dt };
var that=what.Aggregate((a, b) => String.Format((String)a, b));
Можете да обедините два реда в един. at
, който искате да поставите между два формата, също е параметризиран.
Използване на интерполация на низове (C# 6.0+): (документация)
var yearStr = "2018";
var dt = DateTime.Now;
var str = $"{dt:MMM d \'at\' H:mm} {yearStr}";
Обратно наклонената черта не е задължителна
var str = $"{dt:MMM d 'at' H:mm} {yearStr}";
вижте в действие: DotnetFiddle