Documente Academic
Documente Profesional
Documente Cultură
Les chanes de format de date et d'heure personnalises peuvent tre utilises avec les
valeurs DateTime et DateTimeOffset.
Astuce
Vous pouvez tlcharger lutilitaire de mise en forme, une application qui vous permet
dappliquer des chanes de format des valeurs numriques ou des valeurs de date et
dheure, et dafficher la chane de rsultat.
Dans les oprations de mise en forme, les chanes de format de date et d'heure personnalises
peuvent tre utilises avec la mthode ToString d'une instance de date et d'heure ou avec une
mthode qui prend en charge la mise en forme composite. L'exemple suivant illustre ces deux
types d'utilisation.
Dans les oprations d'analyse, les chanes de format de date et d'heure personnalises peuvent
tre utilises avec les
mthodes DateTime.ParseExact, DateTime.TryParseExact, DateTimeOffset.ParseExact et DateTi
meOffset.TryParseExact. Pour que l'opration d'analyse aboutisse, ces mthodes requirent
qu'une chane d'entre se conforme exactement un modle particulier. L'exemple suivant
illustre un appel la mthode DateTimeOffset.ParseExact(String, String,
IFormatProvider) pour analyser une date qui doit comprendre un jour, un mois et une anne
sur deux chiffres.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string[] dateValues = { "30-12-2011", "12-30-2011",
"30-12-11", "12-30-11" };
string pattern = "MM-dd-yy";
DateTime parsedDate;
Le tableau suivant dcrit les spcificateurs de format de date et d'heure personnaliss et affiche
une chane de rsultat produite par chaque spcificateur de format. Par dfaut, les chanes de
rsultat refltent les conventions de mise en forme de la culture en-US. Si un spcificateur de
format particulier produit une chane de rsultat localise, l'exemple indique galement la
culture laquelle la chane de rsultat s'applique. Pour plus d'informations sur l'utilisation de
chanes de format de date et d'heure personnalises, consultez la section Remarques.
Spcificateur
Description Exemples
de format
N'importe Le caractre est copi inchang 2009-06-15T01:45:30 (arr hh:mm t) -> arr
quel autre dans la chane de rsultat. 01:45 A
caractre
Les sections suivantes fournissent des informations supplmentaires sur chaque spcificateur
de format de date et d'heure personnalis. Sauf indication contraire, chaque spcificateur
produit une reprsentation sous forme de chane identique, qu'il soit utilis avec une
valeur DateTime ou une valeur DateTimeOffset.
Console.WriteLine(date1.ToString("d, M",
CultureInfo.InvariantCulture));
// Displays 29, 8
Console.WriteLine(date1.ToString("d MMMM",
CultureInfo.CreateSpecificCulture("en-US")));
// Displays 29 August
Console.WriteLine(date1.ToString("d MMMM",
CultureInfo.CreateSpecificCulture("es-MX")));
// Displays 29 agosto
Console.WriteLine(date1.ToString("dd, MM",
CultureInfo.InvariantCulture));
// 02, 01
Console.WriteLine(date1.ToString("ddd d MMM",
CultureInfo.CreateSpecificCulture("en-US")));
// Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM",
CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays ven. 29 aot
Retour au tableau
Spcificateur de format personnalis "dddd"
Le spcificateur de format personnalis "dddd" (plus n'importe quel nombre de spcificateurs
"d" supplmentaires) reprsente le nom complet du jour de la semaine. Le nom localis du jour
de la semaine est rcupr de la proprit DateTimeFormatInfo.DayNames de la culture
actuelle ou spcifie.
L'exemple suivant inclut le spcificateur de format personnalis "dddd" dans une chane de
format personnalise.
Console.WriteLine(date1.ToString("dddd dd MMMM",
CultureInfo.CreateSpecificCulture("en-US")));
// Displays Friday 29 August
Console.WriteLine(date1.ToString("dddd dd MMMM",
CultureInfo.CreateSpecificCulture("it-IT")));
// Displays venerd 29 agosto
Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Spcificateur de format personnalis "ff"
Le spcificateur de format personnalis "ff" reprsente les deux chiffres les plus significatifs de
la fraction de seconde ; autrement dit, il reprsente les centimes de seconde dans une valeur
de date et d'heure.
L'exemple suivant inclut le spcificateur de format personnalis "ff" dans une chane de format
personnalise.
Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
L'exemple suivant inclut le spcificateur de format personnalis "fff" dans une chane de format
personnalise.
Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Bien qu'il soit possible d'afficher les dix millimes du composant "secondes" d'une valeur
d'heure, cette valeur peut ne pas tre significative. La prcision des valeurs de date et d'heure
dpend de la rsolution de l'horloge systme. Sur les systmes d'exploitation Windows NT
version 3.5 (et ultrieures) et Windows Vista, la rsolution de l'horloge est d'environ 10-15
millisecondes.
L'exemple suivant inclut le spcificateur de format personnalis "F" dans une chane de format
personnalise.
Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("MM/dd/yyyy g",
CultureInfo.InvariantCulture));
// Displays 08/04/0070 A.D.
Console.WriteLine(date1.ToString("MM/dd/yyyy g",
CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 08/04/0070 ap. J.-C.
DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t",
CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t",
CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t",
CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t",
CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5
Console.WriteLine(DateTime.Now.ToString("%K"));
// Displays -07:00
Console.WriteLine(DateTime.UtcNow.ToString("%K"));
// Displays Z
Console.WriteLine("'{0}'",
DateTime.SpecifyKind(DateTime.Now,
DateTimeKind.Unspecified).ToString("%K"));
// Displays ''
Console.WriteLine(DateTimeOffset.Now.ToString("%K"));
// Displays -07:00
Console.WriteLine(DateTimeOffset.UtcNow.ToString("%K"));
// Displays +00:00
Console.WriteLine(new DateTimeOffset(2008, 5, 1, 6, 30, 0,
new TimeSpan(5, 0, 0)).ToString("%K"));
// Displays +05:00
DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t",
CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t",
CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t",
CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t",
CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5
DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt",
CultureInfo.InvariantCulture));
// Displays 06:09:01 PM
Console.WriteLine(date1.ToString("hh:mm:ss tt",
CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.
Console.WriteLine(date1.ToString("dd, MM",
CultureInfo.InvariantCulture));
// 02, 01
Console.WriteLine(date1.ToString("ddd d MMM",
CultureInfo.CreateSpecificCulture("en-US")));
// Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM",
CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays ven. 29 aot
Console.WriteLine(date1.ToString("dddd dd MMMM",
CultureInfo.CreateSpecificCulture("en-US")));
// Displays Friday 29 August
Console.WriteLine(date1.ToString("dddd dd MMMM",
CultureInfo.CreateSpecificCulture("it-IT")));
// Displays venerd 29 agosto
DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt",
CultureInfo.InvariantCulture));
// Displays 06:09:01 PM
Console.WriteLine(date1.ToString("hh:mm:ss tt",
CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.
DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t",
CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t",
CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t",
CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t",
CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5
DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt",
CultureInfo.InvariantCulture));
// Displays 06:09:01 PM
Console.WriteLine(date1.ToString("hh:mm:ss tt",
CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.
using System;
using System.Globalization;
using System.Threading;
cal.TwoDigitYearMax = 2099;
CultureInfo culture = (CultureInfo) CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.Calendar = cal;
Thread.CurrentThread.CurrentCulture = culture;
L'exemple suivant inclut le spcificateur de format personnalis "yy" dans une chane de format
personnalis.
Pour le calendrier bouddhiste thalandais, qui peut comporter des annes cinq chiffres, ce
spcificateur de format affiche tous les chiffres significatifs.
L'exemple suivant inclut le spcificateur de format personnalis "yyy" dans une chane de
format personnalise.
DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010
Pour le calendrier bouddhiste thalandais, qui peut comporter des annes cinq chiffres, ce
spcificateur de format affiche au minimum quatre chiffres.
L'exemple suivant inclut le spcificateur de format personnalis "yyyy" dans une chane de
format personnalise.
Pour modifier le sparateur horaire d'une chane de date et heure, spcifiez le caractre de
sparation dans un dlimiteur de chane littrale. Par exemple, la chane de format
personnalise hh'_'dd'_'ss produit une chane de rsultat dans laquelle "_ " (trait de
soulignement) est toujours utilis comme sparateur horaire. Pour modifier le sparateur
horaire de toutes les dates d'une culture, modifiez la valeur de la
proprit DateTimeFormatInfo.TimeSeparator de la culture actuelle, ou instanciez un
objet DateTimeFormatInfo, affectez le caractre sa proprit TimeSeparator, puis appelez
une surcharge de la mthode de mise en forme qui inclut un paramtre IFormatProvider.
Si le spcificateur de format ":" est utilis sans autre spcificateur de format personnalis, il est
interprt comme un spcificateur de format de date et d'heure standard et lve
un FormatException. Pour plus d'informations sur l'utilisation d'un spcificateur de format
unique, consultez Utilisation de spcificateurs de format personnaliss uniques, plus loin dans
cette rubrique.
Remarque
Pour modifier le sparateur de date d'une chane de date et heure, spcifiez le caractre de
sparation dans un dlimiteur de chane littrale. Par exemple, la chane de format
personnalise mm'/'dd'/'yyyy produit une chane de rsultat dans laquelle "/" est toujours
utilis comme sparateur de date. Pour modifier le sparateur de date de toutes les dates
d'une culture, modifiez la valeur de la proprit DateTimeFormatInfo.DateSeparator de la
culture actuelle, ou instanciez un objet DateTimeFormatInfo, affectez le caractre sa
proprit DateSeparator, puis appelez une surcharge de la mthode de mise en forme qui
inclut un paramtre IFormatProvider.
Si le spcificateur de format "/" est utilis sans autre spcificateur de format personnalis, il est
interprt comme un spcificateur de format de date et d'heure standard et lve
un FormatException. Pour plus d'informations sur l'utilisation d'un spcificateur de format
unique, consultez Utilisation de spcificateurs de format personnaliss uniques, plus loin dans
cette rubrique.
Notes
Utilisation de spcificateurs de format personnaliss uniques
Une chane de format de date et d'heure personnalise se compose d'au moins deux
caractres. Les mthodes de mise en forme de la date et de l'heure interprtent toute chane
un caractre comme une chane de format de date et d'heure standard. Si elles ne
reconnaissent pas le caractre comme un spcificateur de format valide, elles lvent
un FormatException. Par exemple, une chane de format qui se compose uniquement du
spcificateur "h" est interprte comme une chane de format de date et d'heure standard.
Cependant, dans ce cas particulier, une exception est leve, car il n'existe pas spcificateur de
format``de date et d'heure "h" standard.
Pour utiliser tout spcificateur de format de date et d'heure personnalis comme seul
spcificateur dans une chane de format (autrement dit, utiliser le spcificateur de format
personnalis "d", "f", "F", "g", "h", "H", "K", "m", "M", "s", "t", "y", "z", ":" ou "/" tout seul),
incluez un espace avant ou aprs le spcificateur, ou incluez un spcificateur de format
pourcentage ("%") avant le spcificateur de date et d'heure personnalis unique.
Par exemple , "%h"" est interprt en tant que chane de format de date et d'heure
personnalise qui affiche l'heure reprsente par la valeur de date et d'heure actuelle. Vous
pouvez galement utiliser la chane de format "h" ou "h", bien que cela inclue un espace avec
l'heure dans la chane de rsultat. L'exemple suivant illustre ces trois chanes de format.
Console.WriteLine("'{0:%h}'", dat1);
Console.WriteLine("'{0: h}'", dat1);
Console.WriteLine("'{0:h }'", dat1);
// The example displays the following output:
// '1'
// ' 1'
// '1 '
Certains compilateurs, tels que les compilateurs C++ et , peuvent galement interprter une
barre oblique inverse unique comme un caractre d'chappement. Pour garantir
l'interprtation correcte d'une chane lors de la mise en forme, vous pouvez utiliser le
caractre littral de chane textuel(le caractre @) avant la chane en , ou ajouter une autre
barre oblique inverse avant chaque barre oblique inverse en et C++. L'exemple suivant
illustre ces deux approches.
L'exemple suivant utilise le caractre d'chappement pour empcher l'opration de mise en
forme d'interprter les caractres "h" et "m" comme des spcificateurs de format.
DateTime date = new DateTime(2009, 06, 15, 13, 45, 30, 90);
string fmt1 = "h \\h m \\m";
string fmt2 = @"h \h m \m";
Proprits DateTimeFormatInfo
La mise en forme dpend des proprits de l'objet DateTimeFormatInfo actif, qui est fourni
implicitement par la culture actuelle du thread ou explicitement par le
paramtre IFormatProvider de la mthode qui appelle la mise en forme. Pour le
paramtre IFormatProvider, vous devez spcifier un objet CultureInfo qui reprsente une
culture, ou un objet DateTimeFormatInfo.
La chane de rsultat produite par la plupart des spcificateurs de format de date et d'heure
personnaliss dpend galement des proprits de l'objet DateTimeFormatInfo actif. Votre
application peut modifier le rsultat produit par certains spcificateurs de format de date et
d'heure personnaliss en modifiant la proprit DateTimeFormatInfo correspondante. Par
exemple, le spcificateur de format "ddd" ajoute la chane de rsultat le nom abrg d'un jour
de la semaine trouv dans le tableau de chanes AbbreviatedDayNames. De la mme faon, le
spcificateur de format "MMMM" ajoute la chane de rsultat un nom de mois complet
trouv dans le tableau de chanes MonthNames.