C # / .NET – DateTime in ISO 8601 konvertieren
In diesem Artikel wird gezeigt, wie in C # / .NET das DateTime
-Objekt in 8601 Zeichenfolge konvertiert wird.
Schnelle Lösung:
xxxxxxxxxx
using System;
public class Program
{
public static void Main()
{
DateTime time = DateTime.Now;
DateTime utcTime = DateTime.UtcNow;
Console.WriteLine(time.ToString("yyyy-MM-ddTHH:mm:sszzz")); // 2020-07-28T08:40:39+00:00
Console.WriteLine(utcTime.ToString("yyyy-MM-ddTHH:mm:ssZ")); // 2020-07-28T08:40:39Z
}
}
Ausgabe:
xxxxxxxxxx
2020-07-28T08:40:39+00:00
2020-07-28T08:40:39Z
Unten kann man vollständige Beispiele finden:
1. Beispiel für ein Standardformat für Datum und Uhrzeit
Es ist von Bedeutung, invariante Kulturinformationen zu verwenden, um die richtige Formatierungszeit für die ToString()
- Methode zu erhalten.
xxxxxxxxxx
using System;
using System.Globalization;
public class Program
{
private static CultureInfo culture = CultureInfo.InvariantCulture;
public static void Main()
{
DateTime time = DateTime.Now;
DateTime utcTime = DateTime.UtcNow;
// without time zone infomration
Console.WriteLine(time.ToString("s", culture)); // 2020-05-22T21:08:42
Console.WriteLine(utcTime.ToString("s", culture)); // 2020-05-22T21:08:42
// with time zone information (+/-HH:MM or Z)
Console.WriteLine(time.ToString("o", culture)); // 2020-05-22T21:08:42.9082887+00:00
Console.WriteLine(utcTime.ToString("o", culture)); // 2020-05-22T21:08:42.9082887Z
}
}
Ausgabe:
xxxxxxxxxx
2020-05-22T21:08:42
2020-05-22T21:08:42
2020-05-22T21:08:42.9082887+00:00
2020-05-22T21:08:42.9082887Z
2. Beispiel für benutzerdefinierte Datums- und Zeitformatzeichenfolgen
Es gibt verschiedene ISO 8601 - Zeitformate.
xxxxxxxxxx
using System;
public class Program
{
public static void Main()
{
DateTime time = DateTime.Now;
Console.WriteLine(time.ToString("yyyy-MM-ddTHH:mm:sszzz")); // 2019-08-18T07:36:13+01:00
Console.WriteLine(time.ToString("yyyyMMdd")); // 20190818
Console.WriteLine(time.ToString("--MM-dd")); // --08-18
DateTime utcTime = DateTime.UtcNow;
Console.WriteLine(utcTime.ToString("yyyy-MM-ddTHH:mm:ssZ")); // 2019-08-18T06:36:13Z
Console.WriteLine(utcTime.ToString("yyyyMMddTHHZ")); // 20190818T06Z
}
}
// ------------------------------------------------------
// Andere benutzerdefinierte Formate am Ende dieses Abschnitts überprüfen.
//
Ausgabe:
xxxxxxxxxx
2019-08-18T07:36:13+01:00
2019-08-18T06:36:13Z
20190818T06Z
20190818
--08-18
Hinweis: Die mit Z angehängte Zeichenfolge für Datum und Uhrzeit sollte auf
DateTime.UtcNow
basieren. Für weitere Informationen steht dieser Link.
Andere standardmäßige Formate:
xxxxxxxxxx
/*
--[ To use with DateTime.Now ]----------------------
FORMAT TEXT
yyyy-MM-ddTHH:mm:sszzz 2019-08-18T07:36:13+01:00
yyyy-MM-ddTHH:mm:sszz 2019-08-18T07:36:13+01
yyyy-MM-ddTHH:mm:ss 2019-08-18T07:36:13
yyyy-MM-ddTHH:mmzzz 2019-08-18T07:36+01:00
yyyy-MM-ddTHH:mmzz 2019-08-18T07:36+01
yyyy-MM-ddTHH:mm 2019-08-18T07:36
yyyy-MM-ddTHHzzz 2019-08-18T07+01:00
yyyy-MM-ddTHHzz 2019-08-18T07+01
yyyy-MM-ddTHH 2019-08-18T07
yyyy-MM-dd 2019-08-18
yyyyMMddTHHmmsszzz 20190818T073613+01:00
yyyyMMddTHHmmsszz 20190818T073613+01
yyyyMMddTHHmmzzz 20190818T0736+01:00
yyyyMMddTHHmmzz 20190818T0736+01
yyyyMMddTHHzzz 20190818T07+01:00
yyyyMMddTHHzz 20190818T07+01
yyyyMMddTHH 20190818T07
yyyyMMdd 20190818
--MM-dd --08-18
--[ To use with DateTime.UtcNow ]-------------------
FORMAT TEXT
yyyy-MM-ddTHH:mm:ssZ 2019-08-18T06:36:13Z
yyyy-MM-ddTHH:mmZ 2019-08-18T06:36Z
yyyy-MM-ddTHHZ 2019-08-18T06Z
yyyyMMddTHHmmssZ 20190818T063613Z
yyyyMMddTHHmmZ 20190818T0636Z
yyyyMMddTHHZ 20190818T06Z
*/
3. Ein Beispiel für eine nicht standardmäßige Woche und ein Ordnungsdatum
In diesem Abschnitt wird eine nicht standardmäßige Methode gezeigt, die eine Woche oder ein Ordnungsdatum zurückgibt.
xxxxxxxxxx
using System;
using System.Globalization;
public static class ISO8601TimeUtils
{
public static string GetSimpleWeekDate(DateTime time)
{
CultureInfo culture = CultureInfo.InvariantCulture;
Calendar calendar = culture.Calendar;
DateTimeFormatInfo format = culture.DateTimeFormat;
int week = calendar.GetWeekOfYear(time,
format.CalendarWeekRule, format.FirstDayOfWeek);
return time.Year + "-W" + week;
}
public static string GetExtendedWeekDate(DateTime time)
{
string week = GetSimpleWeekDate(time);
return week + "-" + (int)time.DayOfWeek;
}
public static string GetOrdinalDate(DateTime time)
{
return time.Year + "-" + time.DayOfYear;
}
}
// Anwendungsbeispiel:
public class Program
{
public static void Main()
{
DateTime time = DateTime.Now;
Console.WriteLine(ISO8601TimeUtils.GetExtendedWeekDate(time)); // 2019-W34-0
Console.WriteLine(ISO8601TimeUtils.GetSimpleWeekDate(time)); // 2019-W34
Console.WriteLine(ISO8601TimeUtils.GetOrdinalDate(time)); // 2019-230
}
}
Ausgabe:
xxxxxxxxxx
2019-W34-0
2019-W34
2019-230
Hinweis: Das obige Beispiel gibt je nach Konfiguration der
Calendar.GetWeekOfYear
- Methode unterschiedliche Wochennummern zurück.
Siehe auch:
Literaturverzeichnis: