I want to convert a C# DateTime to «YYYYMMDDHHMMSS» format. But I don’t find a built in method to get this format? Any comments?
15 Answers 15
Standard DateTime Formatting
Update using c# 6 string interpolation format
You’ve practically written the format yourself.
- MM = two digit month
- mm = two digit minutes
- HH = two digit hour, 24 hour clock
- hh = two digit hour, 12 hour clock
Everything else should be self-explanatory.
You’ve just got to be careful between months (MM) and minutes (mm):
(Also note that HH is 24 hour clock, whereas hh would be 12 hour clock, usually in conjunction with t or tt for the am/pm designator.)
If you want to do this as part of a composite format string, you’d use:
You can use a custom format string:
Substitute «hh» for «HH» if you do not want 24-hour clock time.
If you use ReSharper, get help with ‘:’ (see image)
if you just want it displayed as a string
In .Net Standard 2 you can format DateTime like belows:
I am surprised no one has a link for this . any format can be created using the guidelines here:
For your specific example (As others have indicated) use something like
Where my_format can be any string combination of y,M,H,m,s,f,F and more! Check out the link.
An easy Method, Full control over ‘from type’ and ‘to type’, and only need to remember this code for future castings
Get the date as a DateTime object instead of a String. Then you can format it as you want.
- MM/dd/yyyy 08/22/2006
- dddd, dd MMMM yyyy Tuesday, 22 August 2006
- dddd, dd MMMM yyyy HH:mm Tuesday, 22 August 2006 06:30
- dddd, dd MMMM yyyy hh:mm tt Tuesday, 22 August 2006 06:30 AM
- dddd, dd MMMM yyyy H:mm Tuesday, 22 August 2006 6:30
- dddd, dd MMMM yyyy h:mm tt Tuesday, 22 August 2006 6:30 AM
- dddd, dd MMMM yyyy HH:mm:ss Tuesday, 22 August 2006 06:30:07
- MM/dd/yyyy HH:mm 08/22/2006 06:30
- MM/dd/yyyy hh:mm tt 08/22/2006 06:30 AM
- MM/dd/yyyy H:mm 08/22/2006 6:30
- MM/dd/yyyy h:mm tt 08/22/2006 6:30 AM
- MM/dd/yyyy HH:mm:ss 08/22/2006 06:30:07
This example shows how to format DateTime using String.Format method. All formatting can be done also using DateTime.ToString method.
Custom DateTime Formatting
There are following custom format specifiers y (year), M (month), d (day), h (hour 12), H (hour 24), m (minute), s (second), f (second fraction), F (second fraction, trailing zeroes are trimmed), t (P.M or A.M) and z (time zone).
Following examples demonstrate how are the format specifiers rewritten to the output.
You can use also date separator / (slash) and time sepatator : (colon). These characters will be rewritten to characters defined in the current DateTimeFormatInfo.DateSeparator and DateTimeFormatInfo.TimeSeparator.
Here are some examples of custom date and time formatting:
Standard DateTime Formatting
In DateTimeFormatInfo there are defined standard patterns for the current culture. For example property ShortTimePattern is string that contains value h:mm tt for en-US culture and value HH:mm for de-DE culture.
Могу ли я изменить стандартный формат вывода DateTime для определенной культуры. Пример:
То, что я хочу использовать две цифры для дня и месяца с использованием стандартного формата «D» или другой standartd один, чтобы зафиксировать размер строки DateTime , Что-то вроде этого выхода:
Создан 27 мар. 18 2018-03-27 14:19:50 Marc
[Относящиеся] (https: // StackOverflow. com/questions/1202381/using-cultureandregioninfobuilder-to-update-built-in-net-culture) – john 27 мар. 18 2018-03-27 14:23:47
Интересно, что я получаю ’01/10/2017′ для ca-ES с кодом в вашем примере. – Magnus 27 мар. 18 2018-03-27 14:33:35
@ Magnus это еще одна странная вещь, когда я использую онлайн-компилятор C# (например, http://rextester.com/l/csharp_online_compiler), он работает так же, как и вы, и на моем компьютере при публикации. – Marc 27 мар. 18 2018-03-27 14:43:58
3 ответа
Базирование на тарелочкам ответ @ Джон я реализовал следующее решение. Я думаю, что лучше использовать инструкцию по замене регулярных выражений с одной итерацией, но у меня нет больше времени, чтобы ее найти.
Он не работает в формате «Год:« yyyy »; Месяц:« ММ »;« День: «дд», но я предполагаю «ошибку».
Создан 27 мар. 18 2018-03-27 16:34:48 Marc
Вы можете использовать DateTimeFormatInfo.ShortDatePattern , чтобы получить образец, а затем заменить d с dd , если вы действительно хотите. Возможно, вам придется рассмотреть такие угловые случаи, как экранированные или процитированные d шаблоны, хотя и, очевидно, не заменяя dd на dddd . (Обратите внимание, что информация о формате из культуры системы будет доступна только для чтения, клонируйте культуру, чтобы получить ее с информацией о формате чтения/записи.) Конечно, вы делали то же самое в течение нескольких месяцев. Возможно, вам даже понадобится изменить летнюю часть.
Мне непонятно, что это хорошая идея, хотя, к тому времени, когда вы изменили формат, это не совсем «стандартный формат коротких дат для культуры».
Даже после всего этого нет никакой гарантии, что она будет одинаковой длины для всех культур. Ничто не мешает культуре использовать короткий формат даты «‘Year:’ yyyy ‘; Month: ‘ MM ‘; ‘Day: ‘dd» . Это было бы очень необычно, но не было бы недействительным.
Создан 27 мар. 18 2018-03-27 14:25:54 Jon Skeet
@Marc: Я не совсем уверен, что вы сейчас говорите, боюсь. – Jon Skeet 27 мар. 18 2018-03-27 14:32:05
Извините @ Джон-скит, я неправильно понял ваш ответ. Все нормально! – Marc 27 мар. 18 2018-03-27 14:51:05
Что-то вроде этого может работать для большинства форматов даты, но, как говорит Джон Скит, могут быть какие-то странные форматы, с которыми трудно справиться.
Создан 27 мар. 18 2018-03-27 14:49:48 M Bakardzhiev
вместо этого большого случая переключения он может просто проверить, будет ли ‘format.ShortDatePattern.ToString()’ запускаться с ‘m’, а затем использовать’ MM/dd/yyyy’ еще использовать ‘dd/MM/yyyy’ намного короче и работает для всех случаев – Franck 27 мар. 18 2018-03-27 15:25:38
@Franck Да, это, безусловно, может быть реорганизовано. – M Bakardzhiev 27 мар. 18 2018-03-27 15:37:07
Как вдохновение не плохо, но оно не работает в суровых случаях, как те, у которых нет// в качестве разделителя или тех, которые начинаются с года. Посмотрите мое решение и комментарий, если хотите. – Marc 27 мар. 18 2018-03-27 16:38:29