2010-06-11 28 views
426

Chcę przekonwertować format C# DateTime na "RRRRMMDDHHMMSS". Ale nie mogę znaleźć wbudowanej metody, aby uzyskać ten format? Wszelkie komentarze?C# DateTime do "YYYYMMDDHHMMSS" format

+7

Pozdrawiam, tylko na bok. Jeśli przechowujesz te wartości, używałbym DateTime.UtcNow. – Joe

+1

Byłoby jeszcze lepiej użyć DateTimeOffset.UtcNow –

Odpowiedz

745

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

+11

czy to tylko ja uważam, że to szalone, aby mieć duże M przez miesiące, a potem wielkie H przez wiele godzin? – Nick

+17

m = minuty/M = miesiące, h = 12 godzin, H = 24 godziny. Podejrzewam, że ktoś zaczął od czasu i powiedział, że hms = godziny min sekundy, potem H stał się 24 godziny, a potem dotarli do tej pory i zabrakło unikalnych listów, więc poszło z walizką. Jedna z tych rzeczy. –

+1

Jak przeanalizowałbyś to ponownie używając 'DateTime.Parse()'? –

231

Praktycznie sam zapisałeś ten format.

yourdate.ToString("yyyyMMddHHmmss")

  • MM = dwie cyfry miesięcy
  • mm = dwie minuty cyfra
  • HH = dwie cyfry godziny 24-godzinny
  • gg = dwie cyfry godziny 12-godzinny

Wszystko inne powinno być oczywiste.

+78

"fff" da milisekundy, aby można było użyć "yyyyMMddHHmmssfff", aby podać ciąg znaków w milisekundach. –

+0

Który jest częścią strefy czasowej (liczba godzin do dodania lub odjęcia od daty GMT)? – Kiquenet

124

Po prostu muszę być ostrożny między miesięcy (MM) i minuty (mm):

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

(również pamiętać, że HH jest zegar 24-godzinny, natomiast hh byłoby 12 godzin zegar, zwykle w . koniunkcji z t lub TT dla aM/pM desygnatora)

Jeśli chcesz zrobić to jako część złożonego ciągu formatu, można użyć:

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

aby uzyskać więcej informacji, zobacz MSDN page on custom date and time formats.

+0

jest to możliwe: 'now.ToString (" yyyyMMdd_HHmmss ")'? Chodzi mi o to, że można łączyć się z innymi postaciami, prawda? – DanielV

+1

@DanielV: Tak, ale zacytuję literalne znaki (z apostrofami). –

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

jeśli chcesz tylko on wyświetlany jako ciąg

25

Można użyć własnego formatu:

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

zastąpić "hh" za "HH", jeśli nie chcę 24-godzinnego zegara.

9
string date = DateTime.Now.ToString("dd-MMM-yy"); //05-Aug-13 
8

Jestem zaskoczony, nikt nie ma linku do tego. dowolnym formacie mogą być tworzone przy użyciu wskazówek tutaj:

Custom Date and Time Format Strings

dla konkretnego przykładu (Jak wykazały inne) użyć czegoś podobnego

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

Gdzie my_format może być dowolną kombinacją ciąg y, M, H, m, s, f, F i więcej! Sprawdź link.

+1

Jon Skeet zawarł ten link w swojej odpowiedzi (http: // /stackoverflow.com/a/3025377/12484). –

392

This site has great examples to sprawdzić

// 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" 

DateTime standardowe formatowanie

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 
*/ 

Aktualizacja użyciu C# 6 ciąg formatu interpolacji

// 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" 
+0

Chciałbym ten format: 'yyyyMMddHHmm [+ -] ZZzz' gdzie *** Część [+ -] ZZzz to strefa czasowa (liczba godzin do dodania lub odjęcia z daty GMT) *** – Kiquenet

+0

czy próbowałeś 'yyyyMMddHHmm zzz' – Moes

+0

' zzz' to *** - 06:00 ***, chciałbym '-0600' – Kiquenet

19

Jeśli używasz ReSharper, uzyskać pomoc „:” (patrz zdjęcie)

Intellisense

+0

Otrzymasz to samo z 2013 (i prawdopodobnie wcześniej) z ReSharper. –

0

A jest łatwy metoda pełną kontrolę nad „z rodzaju” oraz „typ”, a tylko trzeba pamiętać ten kod dla przyszłych odlewów

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

użyciu C# 6,0

$"Date-{DateTime.Now:yyyyMMddHHmmss}" 
-1

Po spędził wiele godzin w wyszukiwarce Google, znalazłem rozwiązania poniżej jak kiedy lokalnie podać datę, bez wyjątku, podczas gdy z innego serwera wystąpił błąd ......... Data nie jest w odpowiednim formacie. Przed zapisaniem/wyszukiwaniem Data pola tekstowego w języku C#, po prostu sprawdzanie zewnętrznej kultury Serera jest taki sam jak kultura serwera bazy danych. Ex oba powinny być "en-US" lub muszą być zarówno "en-GB" asp poniżej snap shot.

enter image description here

Nawet jak inny format daty (dd/mm/rrrr) lub (rrrr/mm/dd), będzie to zaoszczędzić lub poszukać dokładnie.

+0

Muszę zamapować te m's - M to Month, m to minute. To da ci na przykład 2017/51/10 –

+0

Po prostu pokazuje format daty może być dzień/miesiąc/rok lub rok/miesiąc/dzień .......... będzie szukać pomimo różnic kulturowych .. nie mylić z czasem ................ ten format można ustawić na datownik kalendarza dateTicker ........ –