C # DateTime al formato "AAAAMMDDHHMMSS"


621

Quiero convertir un C # DateTime al formato "AAAAMMDDHHMMSS". ¿Pero no encuentro un método integrado para obtener este formato? ¿Algún comentario?

Respuestas:


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

35
¿Soy yo quien piensa que es una locura tener grandes M durante meses y luego grandes H durante horas?
Nick

69
m = minutos / M = meses, h = 12 horas, H = 24 horas. Sospecho que alguien comenzó con el tiempo y dijo hms = horas minutos segundos, luego H se convirtió en 24 horas y luego llegaron a la fecha y se quedaron sin letras únicas, así que fue con el caso. Sólo una de esas cosas.
Douglas Anderson

2
¿Cómo analizarías eso al usarlo DateTime.Parse()?
Big Money

12
@BigMoney usaría DateTime.ParseExact: var now = DateTime.ParseExact (stringVersion, "AAAAMMDDHHMMSS", CultureInfo.InvariantCulture);
Jim Lamb

44
@BigMoney Al analizar, formattambién es sensible a mayúsculas y minúsculas, es decirDateTime.ParseExact(stringValue, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
Nigel Touch

577

Este sitio tiene excelentes ejemplos échale un vistazo

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

Formato estándar de fecha y hora

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

Actualización usando el formato de interpolación de cadenas 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"

Me gustaría este formato: yyyyMMddHHmm[+-]ZZzzdonde La parte [+ -] ZZzz es la zona horaria (el número de horas que se agregarán o restarán de la fecha GMT)
Kiquenet

zzzes -06: 00 , me gustaría-0600
Kiquenet

2
@Kiquenet has intentado .Replace(":", "") $"{dt:yyyyMMddHHmmzzz}".Replace(":", "")como una
solución alternativa

Una alternativa es dt.ToString("...");, donde reemplazar "..."con un formato anterior, por ejemplo. "yyyy-MM-dd".
ToolmakerSteve

247

Prácticamente ha escrito el formato usted mismo.

yourdate.ToString("yyyyMMddHHmmss")

  • MM = mes de dos dígitos
  • mm = minutos de dos dígitos
  • HH = hora de dos dígitos, reloj de 24 horas
  • hh = hora de dos dígitos, reloj de 12 horas

Todo lo demás debe explicarse por sí mismo.


92
"fff" le dará los milisegundos para que pueda usar "aaaaMMddHHmmssfff" para dar una cadena a los milisegundos.
Jeff Widmer

¿Qué es parte de la zona horaria (la cantidad de horas que se agregarán o restarán de la fecha GMT)?
Kiquenet

129

Solo debes tener cuidado entre meses (MM) y minutos (mm):

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

(También tenga en cuenta que HH es un reloj de 24 horas, mientras que hh sería un reloj de 12 horas, generalmente junto con t o tt para el designador am / pm).

Si desea hacer esto como parte de una cadena de formato compuesto, usaría:

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

Para obtener más información, consulte la página de MSDN en formatos de fecha y hora personalizados .


¿Es posible now.ToString("yyyyMMdd_HHmmss"):? Quiero decir, ¿es posible concatenar con otros personajes, correcto?
DanielV

1
@DanielV: Sí, pero citaría los caracteres literales (con apóstrofes).
Jon Skeet

26

Puede usar una cadena de formato personalizado:

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

Sustituya "hh" por "HH" si no desea una hora de reloj de 24 horas.


21

Si usa ReSharper, obtenga ayuda con ':' (ver imagen)

Intellisense


Obtiene lo mismo con 2013 (y probablemente antes) con ReSharper.
Wai Ha Lee

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

si solo quieres que se muestre como una cadena


16

En .Net Standard 2usted puede formatear DateTimecomo a continuación:

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

Me sorprende que nadie tenga un enlace para esto. cualquier formato se puede crear usando las pautas aquí:

Cadenas de formato de fecha y hora personalizadas

Para su ejemplo específico (como otros han indicado) use algo como

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

¡Donde my_format puede ser cualquier combinación de cadenas de y, M, H, m, s, f, F y más! Mira el enlace.


1
Jon Skeet incluyó ese enlace en su respuesta ( stackoverflow.com/a/3025377/12484 ).
Jon Schneider

5

Obtenga la fecha como un DateTimeobjeto en lugar de una Cadena. Luego puedes formatearlo como quieras.

  • MM / dd / aaaa 22/08/2006
  • dddd, dd MMMM aaaa martes 22 de agosto de 2006
  • dddd, dd MMMM aaaa HH: mm Martes, 22 de agosto de 2006 06:30
  • dddd, dd MMMM aaaa hh: mm tt martes, 22 de agosto de 2006 06:30 a.m.
  • dddd, dd MMMM aaaa H: mm martes, 22 de agosto de 2006 6:30
  • dddd, dd MMMM aaaa h: mm tt martes, 22 de agosto de 2006 6:30 a.m.
  • dddd, dd MMMM aaaa HH: mm: ss martes, 22 de agosto de 2006 06:30:07
  • MM / dd / aaaa HH: mm 22/08/2006 06:30
  • MM / dd / aaaa hh: mm tt 22/08/2006 06:30 AM
  • MM / dd / aaaa H: mm 22/08/2006 6:30
  • MM / dd / aaaa h: mm tt 22/08/2006 6:30 AM
  • MM / dd / aaaa HH: mm: ss 22/08/2006 06:30:07

Haga clic aquí para más patrones



3

Un método fácil, control total sobre 'from type' y 'to type', y solo necesita recordar este código para futuros castings

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

2

No es un gran problema. simplemente puedes poner así

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

Disculpe aquí porque usé $, que es para la interpolación de cadenas.


0

Hay pocas posibilidades de que cualquiera de las respuestas anteriores no haya resuelto su problema. Sin embargo, estoy compartiendo mi método que siempre funciona para mí para diferentes formatos de fecha y hora.

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

Después de pasar muchas horas en la búsqueda de Google, encontré la siguiente solución, ya que cuando doy localmente la hora de la fecha, sin excepción, mientras que desde otro servidor, hubo un error ......... La fecha no está en el formato correcto. Antes de guardar / buscar la fecha y hora del cuadro de texto en C #, simplemente verificando que la Cultura del servidor externo sea la misma que la cultura del servidor de la base de datos.

ingrese la descripción de la imagen aquí

Incluso con un formato de fecha diferente como (dd / mm / aaaa) o (aaaa / mm / dd), se guardará o buscará con precisión.


Hay que capitalizar esas m: M es mes, m es minuto. Esto te daría, por ejemplo, 2017/51/10
Chris Moschini

Simplemente muestra que el formato de fecha podría ser día / mes / año o año / mes / día .......... buscará a pesar de la diferencia cultural ... no confunda con el tiempo ....... ......... este formato se puede configurar en dateTimePicker calander ........
Abdul Khaliq
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.