DateTime

De Banane Atomic
Version datée du 13 octobre 2018 à 20:25 par Nicolas (discussion | contributions) (→‎Temps écoulé depuis 1970)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

DateTime et String

Csharp.svg
dateTime.ToString("o");
DateTime dt = DateTime.ParseExact(dateTimeString, "o", DateTimeFormatInfo.CurrentInfo);

// RoundtripKind permet de conserver la valeur de la propriété Kind lors de la convertion. Par défaut Kind est définit à Local.
DateTime.Parse(stringToParse, null, DateTimeStyles.RoundtripKind);

dateTimeOffset.ToString("dd MMM yyyy – HH:mm:ss:fffffff", CultureInfo.InvariantCulture);
DateTimeOffset.ParseExact(stringToParse, "dd MMM yyyy - HH:mm:ss:fffffff zzz", CultureInfo.InvariantCulture);

dateTimeOffset.ToString("o"); // équivalent à 
dateTimeOffset.ToString("yyyy-MM-ddTHH:mm:ss.fffffffzzz", CultureInfo.InvariantCulture);
DateTimeOffset.Parse(stringToParse);

Formats Standard

Nom Code Affichage
ShortDate d 3/9/2008
LongDate D Sunday, March 09, 2008
MonthDay m March 09
YearMonth y March, 2008
ShortTime t 4:05 PM
LongTime T 4:05:07 PM
ShortDate+ShortTime g 3/9/2008 4:05 PM
ShortDate+LongTime G 3/9/2008 4:05:07 PM
LongDate+ShortTime f Sunday, March 09, 2008 4:05 PM
FullDateTime F Sunday, March 09, 2008 4:05:07 PM
RFC1123 r Sun, 09 Mar 2008 16:05:07 GMT
SortableDateTime s 2008-03-09T16:05:07
UniversalSortableDateTime u 2008-03-09 16:05:07Z
o 2008-03-09T16:05:07.1234567+01:00

Formats personnalisés

d 1     yyyy 2015
dd 01 HH 23
ddd lun. mm 59
dddd lundi ss 59
M 1 fff 123
MM 01 zzz -07:00
MMM janv.
MMMM janvier

DateTime et Culture

Si elle n'est pas spécifiée c'est la culture courante (CultureInfo.CurrentCulture) qui est utilisée.
Si l'on utilise un format prédéfinie le résultat peut varier en fonction de la culture:

Csharp.svg
var dt = new DateTime(1984, 1, 30);

dt.ToString("d", new CultureInfo("fr-FR")); // 30/01/1984
dt.ToString("d", new CultureInfo("en-US")); // 1/30/1984


Par contre les formats personnalisés forcent le format et ne permettent pas de variations en fonction de la culture.
De plus il n'est pas possible de combiner un format standard à un format personnalisé.
L'utilisation de DateTimeFormatInfo permet de créer un format personnalisé en fonction de la culture.

Csharp.svg
var dateTimeFormatFr = DateTimeFormatInfo.GetInstance(new CultureInfo("fr-FR"));
var dateTimeFormatUs = DateTimeFormatInfo.GetInstance(new CultureInfo("en-US"));

var customFormatFr = dateTimeFormatFr.ShortDatePattern; // dd/MM/yyyy
var customFormatUs = dateTimeFormatUs.ShortDatePattern; // M/d/yyyy

Temps écoulé depuis 1970

Csharp.svg
var dt = DateTime.Now;
long l = new DateTimeOffset(dt).ToUnixTimeMilliseconds();
Nécessite le Framework .NET 4.6

Exemples

Cs.svg
var firstDayOfMonth = myDate.Date.AddDays(1 - myDate.Day);
var firstDayOfMonth = new DateTime(myDate.Year, myDate.Month, 1);

var lastDayOfMonth = myDate.AddDays(DateTime.DaysInMonth(myDate.Year, myDate.Month) - myDate.Date);
var lastDayOfMonth = new DateTime(myDate.Year, myDate.Month, DateTime.DaysInMonth(myDate.Year, myDate.Month));