C # DateTime al formato "AAAAMMGGHHMMSS"


621

Voglio convertire un DateTime C # nel formato "AAAAMMGGHHMMSS". Ma non trovo un metodo integrato per ottenere questo formato? Qualche commento?

Risposte:


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

35
sono solo io a pensare che sia pazzesco avere grandi M per mesi e grandi H per ore?
Nick,

69
m = minuti / M = mesi, h = 12 ore, H = 24 ore. Ho il sospetto che qualcuno abbia iniziato con il tempo e abbia detto hms = ore min secondi, poi H è diventato 24 ore e poi si sono aggiornati e hanno finito le lettere univoche, quindi è andato con il caso. Solo una di queste cose.
Douglas Anderson,

2
Come lo analizzeresti indietro nell'uso DateTime.Parse()?
Big Money

12
@BigMoney useresti DateTime.ParseExact: var now = DateTime.ParseExact (stringVersion, "YYYYMMDDHHMMSS", CultureInfo.InvariantCulture);
Jim Lamb,

4
@BigMoney Durante l'analisi, formatè anche sensibile al maiuscolo / minuscolo, ovveroDateTime.ParseExact(stringValue, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
Nigel Touch

577

Questo sito ha grandi esempi verificalo

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

Formattazione DateTime standard

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

Aggiornamento utilizzando il formato di interpolazione della stringa 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"

Vorrei questo formato: yyyyMMddHHmm[+-]ZZzzdove La parte [+ -] ZZzz è il fuso orario (il numero di ore da aggiungere o sottrarre dalla data GMT)
Kiquenet,

zzzè -06: 00 , vorrei-0600
Kiquenet,

2
@Kiquenet hai provato .Replace(":", "") $"{dt:yyyyMMddHHmmzzz}".Replace(":", "")a risolvere il
problema

Un'alternativa è dt.ToString("...");, dove sostituire "..."con un formato sopra, ad es. "yyyy-MM-dd".
ToolmakerSteve

247

Hai praticamente scritto tu stesso il formato.

yourdate.ToString("yyyyMMddHHmmss")

  • MM = mese a due cifre
  • mm = minuti a due cifre
  • HH = ora a due cifre, orologio a 24 ore
  • hh = ora a due cifre, orologio a 12 ore

Tutto il resto dovrebbe essere autoesplicativo.


92
"fff" fornirà i millisecondi in modo da poter usare "yyyyMMddHHmmssfff" per dare una stringa fino ai millisecondi.
Jeff Widmer,

Qual è la parte per il fuso orario (il numero di ore da aggiungere o sottrarre dalla data GMT)?
Kiquenet,

129

Devi solo stare attento tra mesi (MM) e minuti (mm):

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

(Si noti inoltre che HH è un orologio a 24 ore, mentre hh sarebbe un orologio a 12 ore, di solito in combinazione con t o tt per il designatore am / pm.)

Se vuoi farlo come parte di una stringa di formato composito, dovresti usare:

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

Per ulteriori informazioni, consultare la pagina MSDN su formati di data e ora personalizzati .


è possibile now.ToString("yyyyMMdd_HHmmss"):? Voglio dire è possibile concatenarsi con altri personaggi, giusto?
Daniel V,

1
@DanielV: Sì, ma citerei i caratteri letterali (con apostrofi).
Jon Skeet,

26

È possibile utilizzare una stringa di formato personalizzata:

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

Sostituire "hh" con "HH" se non si desidera l'ora di 24 ore.


21

Se usi ReSharper, chiedi aiuto con ':' (vedi immagine)

Intellisense


Ottieni lo stesso con il 2013 (e probabilmente prima) con ReSharper.
Wai Ha Lee,

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

se vuoi solo che venga visualizzato come una stringa


16

In .Net Standard 2puoi formattare DateTimecome 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

Sono sorpreso che nessuno abbia un link per questo. qualsiasi formato può essere creato utilizzando le linee guida qui:

Stringhe di formato di data e ora personalizzate

Per il tuo esempio specifico (come altri hanno indicato) usa qualcosa di simile

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

Dove my_format può essere qualsiasi combinazione di stringhe di y, M, H, m, s, f, F e altro! Dai un'occhiata al link.


1
Jon Skeet ha incluso quel link nella sua risposta ( stackoverflow.com/a/3025377/12484 ).
Jon Schneider,

5

Ottieni la data come DateTimeoggetto anziché come stringa. Quindi puoi formattarlo come vuoi.

  • MM / gg / aa 22/08/2006
  • dddd, dd MMMM yyyy martedì 22 agosto 2006
  • dddd, dd MMMM yyyy HH: mm martedì 22 agosto 2006 06:30
  • dddd, dd MMMM yyyy hh: mm tt martedì 22 agosto 2006 06:30
  • dddd, gg MMMM aaaa H: mm martedì 22 agosto 2006 6:30
  • dddd, gg MMMM aaaa h: mm tt martedì 22 agosto 2006 6:30
  • dddd, dd MMMM yyyy HH: mm: ss martedì 22 agosto 2006 06:30:07
  • MM / gg / aaaa HH: mm 22/08/2006 06:30
  • MM / gg / aaaa hh: mm tt 22/08/2006 06:30
  • MM / gg / aaaa H: mm 22/08/2006 6:30
  • MM / gg / aaaa h: mm tt 22/08/2006 6:30 AM
  • MM / gg / aaaa HH: mm: ss 22/08/2006 06:30:07

Fai clic qui per ulteriori schemi



3

Un metodo semplice, controllo completo su "da tipo" e "a tipo", e solo bisogno di ricordare questo codice per i casting futuri

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

2

Non è un grosso problema. puoi semplicemente mettere così

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

Scusa qui per ho usato $ che è per l'interpolazione di stringhe.


0

Ci sono poche possibilità che una qualsiasi delle risposte di cui sopra non abbia risolto il tuo problema. Tuttavia, sto condividendo il mio metodo che funziona sempre per me per diversi formati di dati.

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

Dopo aver trascorso molte ore nella ricerca di Google, ho trovato la soluzione di seguito, poiché quando fornisco localmente l'ora della data, nessuna eccezione mentre da un altro server, si è verificato un errore ......... La data non è nel formato corretto .. Prima di salvare / cercare l'ora della data della casella di testo in C #, è sufficiente verificare che la cultura del server esterno sia la stessa della cultura del server di database. Ex entrambi devono essere "en-US" o devono essere entrambi "en-GB" asp sotto l'istantanea.

inserisci qui la descrizione dell'immagine

Anche con diversi formati di data come (gg / mm / aaaa) o (aaaa / mm / gg), salverà o cercherà accuratamente.


Devo capitalizzare quelle m - M è il mese, m è il minuto. Questi ti darebbero ad esempio il 2017/51/10
Chris Moschini il

Sta solo mostrando che il formato della data potrebbe essere giorno / mese / anno o anno / mese / giorno .......... cercherà nonostante la differenza di cultura ... non confondere con il tempo ....... ......... questo formato può essere impostato su dateTimePicker calander ........
Abdul Khaliq,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.