C # DateTime у форматі "YYYYMMDDHHMMSS"


621

Я хочу перетворити C # DateTime у формат "YYYYMMDDHHMMSS". Але я не знаходжу вбудований метод для отримання цього формату? Будь-які коментарі?

Відповіді:


1060
DateTime.Now.ToString("yyyyMMddHHmmss"); // case sensitive

35
чи просто я вважаю, що гарно мати великі М місяцями, а потім великі Н години?
Нік

69
m = хвилин / M = місяців, h = 12 годин, H = 24 години. Я підозрюю, що хтось почав з часом і сказав, що hms = години хвилин секунди, то H став 24 години, а потім вони отримали дату і закінчилися унікальні літери, так що це пішло зі справою. Просто одна з таких речей.
Дуглас Андерсон

2
Як би ти проаналізував це назад у використанні DateTime.Parse()?
Великі гроші

12
@BigMoney ви б використовували DateTime.ParseExact: var now = DateTime.ParseExact (stringVersion, "YYYYMMDDHHMMSS", CultureInfo.InvariantCulture);
Джим Ламб

4
@BigMoney При синтаксичному розборі також formatє чутливими до регістру, тобтоDateTime.ParseExact(stringValue, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
Nigel Touch

577

На цьому веб-сайті є чудові приклади, які можна перевірити

// create date time 2008-03-09 16:05:07.123
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

String.Format("{0:y yy yyy yyyy}",      dt);  // "8 08 008 2008"   year
String.Format("{0:M MM MMM MMMM}",      dt);  // "3 03 Mar March"  month
String.Format("{0:d dd ddd dddd}",      dt);  // "9 09 Sun Sunday" day
String.Format("{0:h hh H HH}",          dt);  // "4 04 16 16"      hour 12/24
String.Format("{0:m mm}",               dt);  // "5 05"            minute
String.Format("{0:s ss}",               dt);  // "7 07"            second
String.Format("{0:f ff fff ffff}",      dt);  // "1 12 123 1230"   sec.fraction
String.Format("{0:F FF FFF FFFF}",      dt);  // "1 12 123 123"    without zeroes
String.Format("{0:t tt}",               dt);  // "P PM"            A.M. or P.M.
String.Format("{0:z zz zzz}",           dt);  // "-6 -06 -06:00"   time zone

// month/day numbers without/with leading zeroes
String.Format("{0:M/d/yyyy}",           dt);  // "3/9/2008"
String.Format("{0:MM/dd/yyyy}",         dt);  // "03/09/2008"

// day/month names
String.Format("{0:ddd, MMM d, yyyy}",   dt);  // "Sun, Mar 9, 2008"
String.Format("{0:dddd, MMMM d, yyyy}", dt);  // "Sunday, March 9, 2008"

// two/four digit year
String.Format("{0:MM/dd/yy}",           dt);  // "03/09/08"
String.Format("{0:MM/dd/yyyy}",         dt);  // "03/09/2008"

Стандартне форматування часу

String.Format("{0:t}", dt);  // "4:05 PM"                           ShortTime
String.Format("{0:d}", dt);  // "3/9/2008"                          ShortDate
String.Format("{0:T}", dt);  // "4:05:07 PM"                        LongTime
String.Format("{0:D}", dt);  // "Sunday, March 09, 2008"            LongDate
String.Format("{0:f}", dt);  // "Sunday, March 09, 2008 4:05 PM"    LongDate+ShortTime
String.Format("{0:F}", dt);  // "Sunday, March 09, 2008 4:05:07 PM" FullDateTime
String.Format("{0:g}", dt);  // "3/9/2008 4:05 PM"                  ShortDate+ShortTime
String.Format("{0:G}", dt);  // "3/9/2008 4:05:07 PM"               ShortDate+LongTime
String.Format("{0:m}", dt);  // "March 09"                          MonthDay
String.Format("{0:y}", dt);  // "March, 2008"                       YearMonth
String.Format("{0:r}", dt);  // "Sun, 09 Mar 2008 16:05:07 GMT"     RFC1123
String.Format("{0:s}", dt);  // "2008-03-09T16:05:07"               SortableDateTime
String.Format("{0:u}", dt);  // "2008-03-09 16:05:07Z"              UniversalSortableDateTime

/*
Specifier   DateTimeFormatInfo property     Pattern value (for en-US culture)
    t           ShortTimePattern                    h:mm tt
    d           ShortDatePattern                    M/d/yyyy
    T           LongTimePattern                     h:mm:ss tt
    D           LongDatePattern                     dddd, MMMM dd, yyyy
    f           (combination of D and t)            dddd, MMMM dd, yyyy h:mm tt
    F           FullDateTimePattern                 dddd, MMMM dd, yyyy h:mm:ss tt
    g           (combination of d and t)            M/d/yyyy h:mm tt
    G           (combination of d and T)            M/d/yyyy h:mm:ss tt
    m, M        MonthDayPattern                     MMMM dd
    y, Y        YearMonthPattern                    MMMM, yyyy
    r, R        RFC1123Pattern                      ddd, dd MMM yyyy HH':'mm':'ss 'GMT' (*)
    s           SortableDateTi­mePattern             yyyy'-'MM'-'dd'T'HH':'mm':'ss (*)
    u           UniversalSorta­bleDateTimePat­tern    yyyy'-'MM'-'dd HH':'mm':'ss'Z' (*)
                                                    (*) = culture independent   
*/

Оновлення, використовуючи інтерполяційний формат c # 6

// create date time 2008-03-09 16:05:07.123
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

$"{dt:y yy yyy yyyy}";  // "8 08 008 2008"   year
$"{dt:M MM MMM MMMM}";  // "3 03 Mar March"  month
$"{dt:d dd ddd dddd}";  // "9 09 Sun Sunday" day
$"{dt:h hh H HH}";      // "4 04 16 16"      hour 12/24
$"{dt:m mm}";           // "5 05"            minute
$"{dt:s ss}";           // "7 07"            second
$"{dt:f ff fff ffff}";  // "1 12 123 1230"   sec.fraction
$"{dt:F FF FFF FFFF}";  // "1 12 123 123"    without zeroes
$"{dt:t tt}";           // "P PM"            A.M. or P.M.
$"{dt:z zz zzz}";       // "-6 -06 -06:00"   time zone

// month/day numbers without/with leading zeroes
$"{dt:M/d/yyyy}";    // "3/9/2008"
$"{dt:MM/dd/yyyy}";  // "03/09/2008"

// day/month names
$"{dt:ddd, MMM d, yyyy}";    // "Sun, Mar 9, 2008"
$"{dt:dddd, MMMM d, yyyy}";  // "Sunday, March 9, 2008"

// two/four digit year
$"{dt:MM/dd/yy}";    // "03/09/08"
$"{dt:MM/dd/yyyy}";  // "03/09/2008"

Мені б хотілося цього формату: yyyyMMddHHmm[+-]ZZzzде частина [+ -] ZZzz - часовий пояс (кількість годин, які потрібно додати або відняти від дати GMT)
Кікенет

zzzце -06: 00 , я хотів би-0600
Кікенет

2
@Kiquenet Ви пробували .Replace(":", "") $"{dt:yyyyMMddHHmmzzz}".Replace(":", "")як обхід
Nerdroid

Альтернатива полягає в тому dt.ToString("...");, що замініть "..."формат вище, наприклад, "yyyy-MM-dd".
ToolmakerSteve

247

Ви практично самі писали формат.

yourdate.ToString("yyyyMMddHHmmss")

  • ММ = двозначний місяць
  • мм = двозначні хвилини
  • HH = двозначна година, цілодобовий годинник
  • hh = двозначна година, годинник 12 годин

Все інше повинно бути зрозумілим.


92
"fff" дасть мілісекунди, тому ви можете використовувати "yyyyMMddHHmmssfff", щоб надати рядок до мілісекунд.
Джефф Відмер

Яка частина часового поясу (кількість годин, які потрібно додати або відняти від дати GMT)?
Кікенет

129

Ви повинні бути обережними між місяцями (мм) та хвилинами (мм):

DateTime dt = DateTime.Now; // Or whatever
string s = dt.ToString("yyyyMMddHHmmss");

(Також зауважте, що HH - цілодобовий годинник, тоді як hh - 12 годинний годинник, як правило, в поєднанні з t або tt для позначувача am / pm.)

Якщо ви хочете зробити це як частина складеного рядка формату, ви використовуєте:

string s = string.Format("The date/time is: {0:yyyyMMddHHmmss}", dt);

Для отримання додаткової інформації дивіться сторінку MSDN про спеціальні формати дати та часу .


чи можна now.ToString("yyyyMMdd_HHmmss"):? Я маю на увазі, можна поєднатися з іншими персонажами, правда?
DanielV

1
@DanielV: Так, але я б процитував буквальні символи (з апострофами).
Джон Скіт

26

Ви можете використовувати рядок спеціального формату:

DateTime d = DateTime.Now;
string dateString = d.ToString("yyyyMMddHHmmss");

Замініть "hh" на "HH", якщо ви не хочете 24-годинний годинник.


21

Якщо ви використовуєте ReSharper, зверніться за допомогою до ":" (див. Зображення)

Intellisense


Ви отримуєте те саме з 2013 (і, можливо, раніше) з ReSharper.
Вай Ха Лі

18
DateTime.Now.ToString("yyyyMMddHHmmss");

якщо ви просто хочете, щоб він відображався як рядок


16

У .Net Standard 2ви можете форматувати DateTimeяк Belows:

DateTime dt = DateTime.Now;
CultureInfo iv = CultureInfo.InvariantCulture;

// Default formats
// D - long date           Tuesday, 24 April 2018
// d - short date          04/24/2018
// F - full date long      Tuesday, 24 April 2018 06:30:00
// f - full date short     Tuesday, 24 April 2018 06:30
// G - general long        04/24/2018 06:30:00
// g - general short       04/24/2018 06:30
// U - universal full      Tuesday, 24 April 2018 06:30:00
// u - universal sortable  2018-04-24 06:30:00
// s - sortable            2018-04-24T06:30:00
// T - long time           06:30:00
// t - short time          06:30
// O - ISO 8601            2018-04-24T06:30:00.0000000
// R - RFC 1123            Tue, 24 Apr 2018 06:30:00 GMT           
// M - month               April 24
// Y - year month          2018 April
Console.WriteLine(dt.ToString("D", iv));

// Custom formats
// M/d/yy                  4/8/18
// MM/dd/yyyy              04/08/2018
// yy-MM-dd                08-04-18
// yy-MMM-dd ddd           08-Apr-18 Sun
// yyyy-M-d dddd           2018-4-8 Sunday
// yyyy MMMM dd            2018 April 08      
// h:mm:ss tt zzz          4:03:05 PM -03
// HH:m:s tt zzz           16:03:05 -03:00
// hh:mm:ss t z            04:03:05 P -03
// HH:mm:ss tt zz          16:03:05 PM -03      
Console.WriteLine(dt.ToString("M/d/yy", iv));


8

Я здивований, що ніхто не має на це посилання. будь-який формат можна створити, використовуючи тут вказівки:

Спеціальні рядки формату дати та часу

Для вашого конкретного прикладу (як показали інші) використовуйте щось подібне

my_format="yyyyMMddHHmmss";
DateTime.Now.ToString(my_format);

Де my_format може бути будь-якою рядковою комбінацією y, M, H, m, s, f, F та більше! Перевірте посилання.


1
Джон Скіт включив це посилання у свою відповідь ( stackoverflow.com/a/3025377/12484 ).
Джон Шнайдер

5

Отримайте дату як DateTimeоб’єкт замість String. Тоді ви можете відформатувати його як завгодно.

  • MM / dd / yyyy 22.08.2006
  • dddd, dd MMMM yyyy вівторок, 22 серпня 2006 року
  • dddd, dd MMMM yyyy HH: мм Вівторок, 22 серпня 2006 06:30
  • dddd, dd MMMM рр. год. год .: мм tt Вівторок, 22 серпня 2006, 06:30
  • dddd, dd MMMM yyyy H: мм Вівторок, 22 серпня 2006, 6:30
  • dddd, dd MMMM рр. год: мм tt Вівторок, 22 серпня 2006, 6:30
  • dddd, dd MMMM угод. HH: мм: ss Вівторок, 22 серпня 2006 06:30:07
  • MM / dd / yyyy HH: мм 22.08.2006 06:30
  • MM / dd / yyyy hh: мм tt 22.08.2006 06:30
  • MM / dd / yyyy H: мм 22.08.2006 6:30
  • MM / dd / yyyy год: мм tt 22.08.2006 6:30
  • MM / dd / yyyy HH: мм: ss 22.08.2006 06:30:07

Клацніть тут, щоб отримати більше шаблонів



3

Простий метод, повний контроль над "від типу" і "до типу", і потрібно пам'ятати лише цей код для майбутніх кастингів

DateTime.ParseExact(InputDate, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"));

2

Це не велика справа. ви можете просто так поставити

WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd-HH:mm:ss")}");

Вибачте, що я використав $, який призначений для інтерполяції рядків.


0

Швидше за все, що жоден із наведених відповідей не вирішив би вашу проблему. Тим не менш, я ділюсь своїм методом, який завжди працює для мене для різних форматів дати.

//Definition   
     public static DateTime ConvertPlainStringToDatetime(string Date, string inputFormat, string  outputFormat)
            {
                DateTime date;
                CultureInfo enUS = new CultureInfo("en-US");
                DateTime.TryParseExact(Date, inputFormat, enUS,
                                    DateTimeStyles.AdjustToUniversal, out date);

                string formatedDateTime = date.ToString(outputFormat);
                return Convert.ToDateTime(formatedDateTime);   
            }
//Calling

    string oFormat = "yyyy-MM-dd HH:mm:ss";
    DateTime requiredDT = ConvertPlainStringToDatetime("20190205","yyyyMMddHHmmss", oFormat  );
    DateTime requiredDT = ConvertPlainStringToDatetime("20190508-12:46:42","yyyyMMdd-HH:mm:ss", oFormat);

-1

Провівши багато годин на пошуку в Google, я знайшов наступне рішення: коли я локально даю час дати, не виняток, коли з іншого сервера сталася помилка ......... Дата не в належному форматі .. Перш ніж зберегти / шукати час дати в текстовому полі в C #, просто перевірте, чи зовнішня культура Serer є такою ж, як культура сервера баз даних. Наприклад, обидва повинні бути "en-US" або повинні бути обома "en-GB" asp нижче оснащеного знімка.

введіть тут опис зображення

Навіть при різному форматі дати, наприклад (dd / mm / yyyy) або (yyyy / mm / dd), він збереже або шукатиме точно.


Доводиться використовувати великі гроші з тих m - M - місяць, m - хвилина. Це ви дали для прикладу 2017/51/10
Кріс Москіні

Його лише показ формату дати може бути день / місяць / рік або рік / місяць / день .......... він шукатиме, незважаючи на різницю в культурі ... не плутайте з часом ....... ......... цей формат можна встановити на календарі dateTimePicker ........
Абдул Халік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.