C # DateTime au format «YYYYMMDDHHMMSS»

621

Je souhaite convertir un C # DateTime au format "YYYYMMDDHHMMSS". Mais je ne trouve pas de méthode intégrée pour obtenir ce format? Des commentaires?

SARAVAN
la source

Réponses:

1061
DateTime.Now.ToString("yyyyMMddHHmmss"); // case sensitive
Jim Lamb
la source
35
est-ce juste moi qui pense que c'est fou d'avoir des gros M pendant des mois puis des gros H pendant des heures?
Nick
69
m = minutes / M = mois, h = 12 heures, H = 24 heures. Je soupçonne que quelqu'un a commencé avec le temps et a dit hms = heures minutes secondes, puis H est devenu 24 heures et puis ils sont arrivés à ce jour et ont manqué de lettres uniques, donc il en est de même avec le cas. Juste une de ces choses.
Douglas Anderson
2
Comment analyseriez-vous cela en utilisant DateTime.Parse()?
Big Money
12
@BigMoney vous utiliseriez DateTime.ParseExact: var now = DateTime.ParseExact (stringVersion, "YYYYMMDDHHMMSS", CultureInfo.InvariantCulture);
Jim Lamb
4
@BigMoney Lors de l'analyse, le formatest également sensible à la casse, c'estDateTime.ParseExact(stringValue, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
Nigel Touch
577

Ce site a d' excellents exemples 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"

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

Mettre à jour en utilisant le format d'interpolation de chaîne 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
la source
Je voudrais ce format: yyyyMMddHHmm[+-]ZZzzla partie [+ -] ZZzz est le fuseau horaire (le nombre d'heures à ajouter ou à soustraire de la date GMT)
Kiquenet
zzzest -06: 00 , je voudrais-0600
Kiquenet
2
@Kiquenet avez-vous essayé .Replace(":", "") $"{dt:yyyyMMddHHmmzzz}".Replace(":", "")de contourner
Nerdroid
Une alternative est dt.ToString("...");, où remplacer "..."par un format ci-dessus, par exemple. "yyyy-MM-dd".
ToolmakerSteve
247

Vous avez pratiquement écrit le format vous-même.

yourdate.ToString("yyyyMMddHHmmss")

  • MM = mois à deux chiffres
  • mm = minutes à deux chiffres
  • HH = heure à deux chiffres, horloge 24 heures
  • hh = heure à deux chiffres, horloge de 12 heures

Tout le reste devrait être explicite.

Anthony Pegram
la source
92
"fff" donnera les millisecondes, vous pouvez donc utiliser "yyyyMMddHHmmssfff" pour donner une chaîne aux millisecondes.
Jeff Widmer
Quelle partie du fuseau horaire (le nombre d'heures à ajouter ou à soustraire de la date GMT)?
Kiquenet
129

Il faut juste être prudent entre les mois (MM) et les minutes (mm):

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

(Notez également que HH est une horloge de 24 heures, alors que hh serait une horloge de 12 heures, généralement en conjonction avec t ou tt pour l'indicateur am / pm.)

Si vous souhaitez le faire dans le cadre d'une chaîne de format composite, vous devez utiliser:

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

Pour plus d'informations, consultez la page MSDN sur les formats de date et d'heure personnalisés .

Jon Skeet
la source
est-il possible de now.ToString("yyyyMMdd_HHmmss"):? Je veux dire, est-il possible de concaténer avec d'autres personnages, n'est-ce pas?
DanielV
1
@DanielV: Oui, mais je citerais les caractères littéraux (avec des apostrophes).
Jon Skeet
26

Vous pouvez utiliser une chaîne de format personnalisé:

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

Remplacez "hh" par "HH" si vous ne voulez pas d'horloge sur 24 heures.

Paul Kearney - pk
la source
21

Si vous utilisez ReSharper, obtenez de l'aide avec ':' (voir l'image)

Intellisense

Georg
la source
Vous obtenez la même chose avec 2013 (et probablement avant) avec ReSharper.
Wai Ha Lee
18
DateTime.Now.ToString("yyyyMMddHHmmss");

si vous voulez juste qu'il s'affiche sous forme de chaîne

Pharabus
la source
16

Dans .Net Standard 2vous pouvez formater DateTimecomme ci-dessous:

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

Je suis surpris que personne n'ait de lien pour cela. n'importe quel format peut être créé en utilisant les directives ici:

Chaînes de format de date et d'heure personnalisées

Pour votre exemple spécifique (comme d'autres l'ont indiqué), utilisez quelque chose comme

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

Où mon_format peut être n'importe quelle combinaison de chaînes de y, M, H, m, s, f, F et plus encore! Consultez le lien.

joecop
la source
1
Jon Skeet a inclus ce lien dans sa réponse ( stackoverflow.com/a/3025377/12484 ).
Jon Schneider
5

Obtenez la date en tant DateTimequ'objet au lieu d'une chaîne. Ensuite, vous pouvez le formater comme vous le souhaitez.

  • MM / jj / aaaa 22/08/2006
  • jjjj, jj MMMM aaaa mardi 22 août 2006
  • jjjj, jj MMMM aaaa HH: mm mardi 22 août 2006 06:30
  • jjjj, jj MMMM aaaa hh: mm tt mardi 22 août 2006 06:30
  • jjjj, jj MMMM aaaa H: mm mardi 22 août 2006 6h30
  • jjjj, jj MMMM aaaa h: mm tt mardi 22 août 2006 06h30
  • jjjj, jj MMMM aaaa HH: mm: ss mardi 22 août 2006 06:30:07
  • MM / jj / aaaa HH: mm 22/08/2006 06:30
  • MM / jj / aaaa hh: mm tt 22/08/2006 06:30 AM
  • MM / jj / aaaa H: mm 22/08/2006 6:30
  • MM / jj / aaaa h: mm tt 22/08/2006 6:30 AM
  • MM / jj / aaaa HH: mm: ss 22/08/2006 06:30:07

Cliquez ici pour plus de modèles

Gihan Saranga Siriwardhana
la source
3

en utilisant C # 6.0

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

Une méthode simple, un contrôle total sur «du type» et «au type», et il suffit de se souvenir de ce code pour les castings futurs

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

Ce n'est pas grave. vous pouvez simplement mettre comme ça

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

Excusez-moi ici car j'ai utilisé $ qui est pour l'interpolation de chaîne.

Sunil Dhappadhule
la source
0

Les chances sont minces qu'aucune des réponses ci-dessus n'ait résolu votre problème. Néanmoins, je partage ma méthode qui fonctionne toujours pour moi pour différents formats d'heures.

//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.
la source
-1

Après avoir passé beaucoup d'heures sur la recherche Google, j'ai trouvé la solution ci-dessous car lorsque je donne localement l'heure de la date, aucune exception alors que sur un autre serveur, il y avait une erreur ......... La date n'est pas au bon format .. Avant d'enregistrer / rechercher l'heure de la date de la zone de texte en C #, il suffit de vérifier que la culture Serer externe est identique à la culture du serveur de base de données.

entrez la description de l'image ici

Même avec un format de date différent comme (jj / mm / aaaa) ou (aaaa / mm / jj), il sera enregistré ou recherché avec précision.

Abdul Khaliq
la source
Doit mettre en majuscule ces m - M est le mois, m est la minute. Ceux-ci vous donneraient par exemple le 2017/51/10
Chris Moschini
Son affichage du format de date peut être jour / mois / année ou année / mois / jour .......... il cherchera malgré la différence de culture ... ne confondez pas avec le temps ....... ......... ce format peut être réglé sur la calandre dateTimePicker ........
Abdul Khaliq