Languages
[Edit]
DE

C # / .NET – DateTime in ISO 8601 konvertieren

3 points
Created by:
Nikki
7970

In diesem Artikel wird gezeigt, wie in C # / .NET das DateTime-Objekt in 8601 Zeichenfolge konvertiert wird.

Schnelle Lösung:

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:

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. 

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:

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. 

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:

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:

/*

--[ 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. 

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:

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:

  1.  ISO 8601 - What is Z in date time format yyyy-MM-ddTHH:mm:ssZ

Literaturverzeichnis:

  1. ISO 8601 - Wikipedia
  2. ISO week date - Wikipedia
  3. Standard Date and Time Format Strings - Microsoft Docs
  4. Custom date and time format strings - Microsoft Docs
Native Advertising
50 000 ad impressions - 449$
🚀
Get your tech brand or product in front of software developers.
For more information contact us:
Red dot
Dirask - friendly IT community for everyone.

❤️💻 🙂

Join