#c# #.net
#c# #.net
Вопрос:
Хорошо, я перепробовал все, чтобы отобразить дату в формате Apr ’11 с DateTime ToString
помощью метода. В документации указано '
, что зарезервировано для строкового литерала, поэтому я бы подумал, чтобы отобразить один апостроф, который я бы использовал '''
— однако, нет. Вот что я пробовал до сих пор:
taskdata.Month.Start.ToString("MMM 'yy")
A first chance exception of type 'System.FormatException' occurred in mscorlib.dll
taskdata.Month.Start.ToString("MMM ''yy")
"Apr 09"
taskdata.Month.Start.ToString("MMM '''yy")
A first chance exception of type 'System.FormatException' occurred in mscorlib.dll
taskdata.Month.Start.ToString("MMM ''''yy")
"Apr 09"
taskdata.Month.Start.ToString("MMM 'yy")
A first chance exception of type 'System.FormatException' occurred in mscorlib.dll
taskdata.Month.Start.ToString("MMM '''yy")
A first chance exception of type 'System.FormatException' occurred in mscorlib.dll
Серьезно, в чем секрет? Я отказываюсь объединять!
Комментарии:
1. Я отказываюсь объединять! а почему бы и нет? Зачем тратить время на то, что вы могли бы просто реализовать самостоятельно и покончить с этим?
2. Вы когда-нибудь унаследовали код и сказали: «Почему они сделали это так, а не простым способом, очевидно, что этот человек не умеет кодировать». Да, я не хочу быть «этим человеком» в будущем.
3. @EdS. Чтобы написать лучший код. Чтобы узнать что-то новое. Чтобы выполнить задачу (хм, попросив других, потерпите неудачу :).
4. Эй, я бы понял это в конце концов.. вероятно.
5. @Otiel: Согласен. Я не понимал, что это была просто проблема с экранированием символов, читайте слишком быстро.
Ответ №1:
Вам нужно выполнить escape (фактически, двойной escape):
new DateTime(2011, 10, 1).ToString("MMM \'yy")
Комментарии:
1. Обратите внимание, что если вы используете дословный строковый литерал, вам не нужно двойное экранирование :
@"MMM 'yy"
.
Ответ №2:
String.Format(@"{0:MMM 'yy}", DateTime.Now)
Сработало для меня