DateTime et String
|
var formattedDate = $"{DateTime.Now:yyyy-MM-dd}";
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);
|
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
|
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:
|
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.
|
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
|
DateOnly
|
DateOnly date = DateOnly.FromDateTime(DateTime.Now);
DateTime dateTime = date.ToDateTime(TimeOnly.Parse("10:00 AM"));
|
|
var dt = DateTime.Now;
long l = new DateTimeOffset(dt).ToUnixTimeMilliseconds();
|
|
Nécessite le Framework .NET 4.6 |
|
var max = date1 > date2 ? date1 : date2;
var max = new[] { date1, date2, date3 }.Max();
public static T Max<T>(T first, T second) {
if (Comparer<T>.Default.Compare(first, second) > 0)
return first;
return second;
}
var max = Max(date1, date2);
|
Exemples
|
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));
|