C # DateTime im Format „JJJJMMTTHHMMSS“

621

Ich möchte eine C # DateTime in das Format "JJJJMMTTHHMMSS" konvertieren. Aber ich finde keine eingebaute Methode, um dieses Format zu erhalten? Irgendwelche Kommentare?

SARAVAN
quelle

Antworten:

1060
DateTime.Now.ToString("yyyyMMddHHmmss"); // case sensitive
Jim Lamb
quelle
35
ist es nur ich, der denkt, es ist verrückt, monatelang große Ms zu haben, dann stundenlang große Hs?
Nick
69
m = Minuten / M = Monate, h = 12 Stunden, H = 24 Stunden. Ich vermute, jemand hat mit der Zeit angefangen und gesagt, hms = Stunden, Minuten, Sekunden, dann wurde H zu 24 Stunden, und dann sind sie auf dem neuesten Stand und haben keine eindeutigen Buchstaben mehr. Nur eines dieser Dinge.
Douglas Anderson
2
Wie würden Sie das bei der Verwendung zurück analysieren DateTime.Parse()?
Big Money
12
@BigMoney Sie würden DateTime.ParseExact verwenden: var now = DateTime.ParseExact (stringVersion, "YYYYMMDDHHMMSS", CultureInfo.InvariantCulture);
Jim Lamb
4
@ BigMoney Beim Parsen formatwird auch zwischen Groß- und Kleinschreibung unterschieden, dhDateTime.ParseExact(stringValue, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
Nigel Touch
577

Diese Seite hat große Beispiele , check it out

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

Standard DateTime Formatierung

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

Aktualisieren Sie mit dem String-Interpolationsformat 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"
Nerdroid
quelle
Ich möchte dieses Format: yyyyMMddHHmm[+-]ZZzzwobei der [+ -] ZZzz-Teil die Zeitzone ist (die Anzahl der Stunden, die vom GMT-Datum hinzugefügt oder abgezogen werden müssen)
Kiquenet
zzzist -06: 00 , ich möchte-0600
Kiquenet
2
@ Kiquenet haben Sie .Replace(":", "") $"{dt:yyyyMMddHHmmzzz}".Replace(":", "")als Workaround versucht
Nerdroid
Eine Alternative ist dt.ToString("...");, wo durch "..."ein Format oben ersetzen , z. "yyyy-MM-dd".
ToolmakerSteve
247

Sie haben das Format praktisch selbst geschrieben.

yourdate.ToString("yyyyMMddHHmmss")

  • MM = zweistelliger Monat
  • mm = zweistellige Minuten
  • HH = zweistellige Stunde, 24-Stunden-Uhr
  • hh = zweistellige Stunde, 12-Stunden-Uhr

Alles andere sollte selbsterklärend sein.

Anthony Pegram
quelle
92
"fff" gibt die Millisekunden an, sodass Sie mit "yyyyMMddHHmmssfff" eine Zeichenfolge für die Millisekunden angeben können.
Jeff Widmer
Welcher Teil ist Teil der Zeitzone (die Anzahl der Stunden, die vom GMT-Datum hinzugefügt oder abgezogen werden müssen)?
Kiquenet
129

Sie müssen nur zwischen Monaten (MM) und Minuten (mm) vorsichtig sein:

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

(Beachten Sie auch, dass HH eine 24-Stunden-Uhr ist, während hh eine 12-Stunden-Uhr ist, normalerweise in Verbindung mit t oder tt für den am / pm-Bezeichner.)

Wenn Sie dies als Teil einer zusammengesetzten Formatzeichenfolge tun möchten, verwenden Sie:

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

Weitere Informationen zu benutzerdefinierten Datums- und Uhrzeitformaten finden Sie auf der MSDN-Seite .

Jon Skeet
quelle
ist es möglich : now.ToString("yyyyMMdd_HHmmss")? Ich meine, ist es möglich, mit anderen Zeichen zu verketten, richtig?
DanielV
1
@ DanielV: Ja, aber ich würde die wörtlichen Zeichen (mit Apostrophen) zitieren.
Jon Skeet
26

Sie können eine benutzerdefinierte Formatzeichenfolge verwenden:

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

Ersetzen Sie "HH" durch "hh", wenn Sie keine 24-Stunden-Uhrzeit wünschen.

Paul Kearney - pk
quelle
21

Wenn Sie ReSharper verwenden, erhalten Sie Hilfe mit ':' (siehe Bild).

Intellisense

Georg
quelle
Sie erhalten das gleiche mit 2013 (und wahrscheinlich vorher) mit ReSharper.
Wai Ha Lee
18
DateTime.Now.ToString("yyyyMMddHHmmss");

wenn Sie es nur als Zeichenfolge anzeigen möchten

Pharabus
quelle
16

In können .Net Standard 2Sie DateTimewie folgt formatieren:

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));
Sina Lotfi
quelle
11
string date = DateTime.Now.ToString("dd-MMM-yy");  //05-Aug-13
Zohaib Iqbal
quelle
8

Ich bin überrascht, dass niemand einen Link dafür hat. Jedes Format kann anhand der folgenden Richtlinien erstellt werden:

Benutzerdefinierte Zeichenfolgen für Datums- und Uhrzeitformat

Verwenden Sie für Ihr spezielles Beispiel (wie andere angegeben haben) so etwas wie

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

Wobei my_format eine beliebige Zeichenfolgenkombination aus y, M, H, m, s, f, F und mehr sein kann! Überprüfen Sie den Link.

Joecop
quelle
1
Jon Skeet hat diesen Link in seine Antwort aufgenommen ( stackoverflow.com/a/3025377/12484 ).
Jon Schneider
5

Holen Sie sich das Datum als DateTimeObjekt anstelle eines Strings. Dann können Sie es formatieren, wie Sie möchten.

  • MM / TT / JJJJ 22.08.2006
  • TTTT, TT MMMM JJJJ Dienstag, 22. August 2006
  • TTTT, TT MMMM JJJJ HH: MM Dienstag, 22. August 2006 06:30
  • dddd, dd MMMM jjjj hh: mm tt Dienstag, 22. August 2006, 06:30 Uhr
  • TTTT, TT MMMM JJJJ H: MM Dienstag, 22. August 2006 6:30
  • dddd, dd MMMM jjjj h: mm tt Dienstag, 22. August 2006, 6.30 Uhr
  • TTTT, TT MMMM JJJJ HH: MM: SS Dienstag, 22. August 2006 06:30:07
  • MM / TT / JJJJ HH: MM 22.08.2006 06:30
  • MM / TT / JJJJ hh: mm tt 22.08.2006 06:30 Uhr
  • MM / TT / JJJJ H: MM 22.08.2006 6:30
  • MM / TT / JJJJ H: MM tt 22.08.2006 6:30 Uhr
  • MM / TT / JJJJ HH: MM: SS 22.08.2006 06:30:07

Klicken Sie hier für weitere Muster

Gihan Saranga Siriwardhana
quelle
3

mit C # 6.0

$"Date-{DateTime.Now:yyyyMMddHHmmss}"
Waleed AK
quelle
3

Eine einfache Methode, volle Kontrolle über 'von Typ' und 'zu Typ' und muss diesen Code nur für zukünftige Castings speichern

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

Es ist keine große Sache. Sie können einfach so sagen

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

Entschuldigen Sie hier, dass ich $ verwendet habe, was für die String-Interpolation steht.

Sunil Dhappadhule
quelle
0

Die Chancen stehen schlecht, dass eine der oben genannten Antworten Ihr Problem nicht gelöst hätte. Trotzdem teile ich meine Methode, die für mich immer für verschiedene Datumsformate funktioniert.

//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);
Iqra.
quelle
-1

Nachdem ich viele Stunden in der Google-Suche verbracht hatte, fand ich die folgende Lösung: Als ich lokal Datum und Uhrzeit angab, keine Ausnahme, während von einem anderen Server ein Fehler auftrat ......... Datum ist nicht im richtigen Format. Vor dem Speichern / Durchsuchen der Datums- und Uhrzeit des Textfelds in C # muss nur überprüft werden, ob die äußere Sererkultur der Datenbankserverkultur entspricht. Bsp. Beide sollten "en-US" oder beide "en-GB" unter dem Schnappschuss sein.

Geben Sie hier die Bildbeschreibung ein

Selbst bei unterschiedlichen Datumsformaten wie (TT / MM / JJJJ) oder (JJJJ / MM / TT) wird genau gespeichert oder gesucht.

Abdul Khaliq
quelle
Müssen diese m groß schreiben - M ist Monat, m ist Minute. Diese würden Ihnen zum Beispiel 2017/51/10
Chris Moschini
Es wird nur das Datumsformat angezeigt, das möglicherweise Tag / Monat / Jahr oder Jahr / Monat / Tag ist. Es wird trotz kultureller Unterschiede gesucht. Nicht mit der Zeit verwechseln. ......... dieses Format kann auf dateTimePicker kalander eingestellt werden ........
Abdul Khaliq