Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/core/install/linux-snap-runtime.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Install .NET Runtime on Linux with Snap
description: Learn about how to install the .NET Runtime snap package. Canonical maintains and supports .NET-related snap packages.
author: adegeo
ms.author: adegeo
ms.date: 12/13/2024
ms.date: 01/16/2026
ms.topic: install-set-up-deploy
ms.custom: linux-related-content
#customer intent: As a Linux user, I want to install .NET Runtime through Snap.
Expand Down
2 changes: 1 addition & 1 deletion docs/core/install/macos-notarization-issues.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Working with macOS Catalina Notarization
description: How to handle notarization and certificate problems with macOS when you install the .NET runtime, SDK, and apps built with .NET.
author: adegeo
ms.author: adegeo
ms.date: 11/11/2024
ms.date: 01/16/2026
---

# macOS Catalina Notarization and the impact on .NET downloads and projects
Expand Down
132 changes: 106 additions & 26 deletions docs/standard/base-types/parsing-datetime.md

Large diffs are not rendered by default.

153 changes: 153 additions & 0 deletions docs/standard/base-types/snippets/parsing-datetime/csharp/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
using System;
using System.Globalization;

namespace ParsingDateTimeExamples
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("=== DateTime Parsing Examples ===");
DateTimeParseExample();
DateTimeParseGermanExample();
DateTimeParseNoDefaultExample();
DateTimeParseExactExample();

Console.WriteLine("\n=== DateOnly Parsing Examples ===");
DateOnlyParseExample();
DateOnlyParseExactExample();

Console.WriteLine("\n=== TimeOnly Parsing Examples ===");
TimeOnlyParseExample();
TimeOnlyParseExactExample();
}

//<datetime-parse>
static void DateTimeParseExample()
{
// Parse common date and time formats using current culture
var dateTime1 = DateTime.Parse("1/15/2025 3:30 PM");
var dateTime2 = DateTime.Parse("January 15, 2025");
var dateTime3 = DateTime.Parse("15:30:45");

Console.WriteLine($"Parsed: {dateTime1}");
Console.WriteLine($"Parsed: {dateTime2}");
Console.WriteLine($"Parsed: {dateTime3}");

// Parse with specific culture
var germanDate = DateTime.Parse("15.01.2025", new CultureInfo("de-DE"));
Console.WriteLine($"German date parsed: {germanDate}");
}
//</datetime-parse>

//<datetime-parseexact>
static void DateTimeParseExactExample()
{
// Parse exact format
var exactDate = DateTime.ParseExact("2025-01-15T14:30:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
Console.WriteLine($"Exact parse: {exactDate}");

// Parse with custom format
var customDate = DateTime.ParseExact("15/Jan/2025 2:30 PM", "dd/MMM/yyyy h:mm tt", CultureInfo.InvariantCulture);
Console.WriteLine($"Custom format: {customDate}");
}
//</datetime-parseexact>

//<datetime_parse_culture>
static void DateTimeParseGermanExample()
{
var cultureInfo = new CultureInfo("de-DE");
string dateString = "12 Juni 2008";
var dateTime = DateTime.Parse(dateString, cultureInfo);
Console.WriteLine(dateTime);
// The example displays the following output:
// 6/12/2008 00:00:00
}
//</datetime_parse_culture>

//<datetime-parse-nodefault>
static void DateTimeParseNoDefaultExample()
{
var cultureInfo = new CultureInfo("de-DE");
string dateString = "12 Juni 2008";
var dateTime = DateTime.Parse(dateString, cultureInfo,
DateTimeStyles.NoCurrentDateDefault);
Console.WriteLine(dateTime);
// The example displays the following output if the current culture is en-US:
// 6/12/2008 00:00:00
}
//</datetime-parse-nodefault>

//<dateonly-parse>
static void DateOnlyParseExample()
{
// Parse common date formats
var date1 = DateOnly.Parse("1/15/2025");
var date2 = DateOnly.Parse("January 15, 2025", CultureInfo.InvariantCulture);
var date3 = DateOnly.Parse("2025-01-15");

Console.WriteLine($"Parsed date: {date1}");
Console.WriteLine($"Parsed date: {date2.ToString("D")}"); // Long date format
Console.WriteLine($"Parsed date: {date3.ToString("yyyy-MM-dd")}");

// Parse with specific culture
var germanDate = DateOnly.Parse("15.01.2025", new CultureInfo("de-DE"));
Console.WriteLine($"German date: {germanDate}");
}
//</dateonly-parse>

//<dateonly-parseexact>
static void DateOnlyParseExactExample()
{
// Parse exact format
var exactDate = DateOnly.ParseExact("21 Oct 2015", "dd MMM yyyy", CultureInfo.InvariantCulture);
Console.WriteLine($"Exact date: {exactDate}");

// Parse ISO format
var isoDate = DateOnly.ParseExact("2025-01-15", "yyyy-MM-dd", CultureInfo.InvariantCulture);
Console.WriteLine($"ISO date: {isoDate}");

// Parse with multiple possible formats
string[] formats = { "MM/dd/yyyy", "M/d/yyyy", "dd/MM/yyyy" };
var flexibleDate = DateOnly.ParseExact("1/15/2025", formats, CultureInfo.InvariantCulture, DateTimeStyles.None);
Console.WriteLine($"Flexible parse: {flexibleDate}");
}
//</dateonly-parseexact>

//<timeonly-parse>
static void TimeOnlyParseExample()
{
// Parse common time formats
var time1 = TimeOnly.Parse("14:30:15");
var time2 = TimeOnly.Parse("2:30 PM", CultureInfo.InvariantCulture);
var time3 = TimeOnly.Parse("17:45");

Console.WriteLine($"Parsed time: {time1}");
Console.WriteLine($"Parsed time: {time2.ToString("t")}"); // Short time format
Console.WriteLine($"Parsed time: {time3.ToString("HH:mm")}");

// Parse with milliseconds
var preciseTime = TimeOnly.Parse("14:30:15.123");
Console.WriteLine($"Precise time: {preciseTime.ToString("HH:mm:ss.fff")}");
}
//</timeonly-parse>

//<timeonly-parseexact>
static void TimeOnlyParseExactExample()
{
// Parse exact format
var exactTime = TimeOnly.ParseExact("5:00 pm", "h:mm tt", CultureInfo.InvariantCulture);
Console.WriteLine($"Exact time: {exactTime}");

// Parse 24-hour format
var militaryTime = TimeOnly.ParseExact("17:30:25", "HH:mm:ss", CultureInfo.InvariantCulture);
Console.WriteLine($"Military time: {militaryTime}");

// Parse with multiple possible formats
string[] timeFormats = { "h:mm tt", "HH:mm", "H:mm" };
var flexibleTime = TimeOnly.ParseExact("2:30 PM", timeFormats, CultureInfo.InvariantCulture, DateTimeStyles.None);
Console.WriteLine($"Flexible time parse: {flexibleTime}");
}
//</timeonly-parseexact>
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
</PropertyGroup>

</Project>
</Project>
139 changes: 139 additions & 0 deletions docs/standard/base-types/snippets/parsing-datetime/vb/Program.vb
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
Imports System.Globalization

Module Program
Sub Main(args As String())
Console.WriteLine("=== DateTime Parsing Examples ===")
DateTimeParseExample()
DateTimeParseGermanExample()
DateTimeParseNoDefaultExample()
DateTimeParseExactExample()

Console.WriteLine(Environment.NewLine & "=== DateOnly Parsing Examples ===")
DateOnlyParseExample()
DateOnlyParseExactExample()

Console.WriteLine(Environment.NewLine & "=== TimeOnly Parsing Examples ===")
TimeOnlyParseExample()
TimeOnlyParseExactExample()
End Sub

'<datetime-parse>
Sub DateTimeParseExample()
' Parse common date and time formats using current culture
Dim dateTime1 = DateTime.Parse("1/15/2025 3:30 PM")
Dim dateTime2 = DateTime.Parse("January 15, 2025")
Dim dateTime3 = DateTime.Parse("15:30:45")

Console.WriteLine($"Parsed: {dateTime1}")
Console.WriteLine($"Parsed: {dateTime2}")
Console.WriteLine($"Parsed: {dateTime3}")

' Parse with specific culture
Dim germanDate = DateTime.Parse("15.01.2025", New CultureInfo("de-DE"))
Console.WriteLine($"German date parsed: {germanDate}")
End Sub
'</datetime-parse>

'<datetime-parseexact>
Sub DateTimeParseExactExample()
' Parse exact format
Dim exactDate = DateTime.ParseExact("2025-01-15T14:30:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture)
Console.WriteLine($"Exact parse: {exactDate}")

' Parse with custom format
Dim customDate = DateTime.ParseExact("15/Jan/2025 2:30 PM", "dd/MMM/yyyy h:mm tt", CultureInfo.InvariantCulture)
Console.WriteLine($"Custom format: {customDate}")
End Sub
'</datetime-parseexact>

'<datetime_parse_culture>
Sub DateTimeParseGermanExample()
Dim MyCultureInfo As New CultureInfo("de-DE")
Dim MyString As String = "12 Juni 2008"
Dim MyDateTime As DateTime = DateTime.Parse(MyString, MyCultureInfo)
Console.WriteLine(MyDateTime)
' The example displays the following output:
' 6/12/2008 00:00:00
End Sub
'</datetime_parse_culture>

'<datetime-parse-nodefault>
Sub DateTimeParseNoDefaultExample()
Dim MyCultureInfo As New CultureInfo("de-DE")
Dim MyString As String = "12 Juni 2008"
Dim MyDateTime As DateTime = DateTime.Parse(MyString, MyCultureInfo,
DateTimeStyles.NoCurrentDateDefault)
Console.WriteLine(MyDateTime)
' The example displays the following output if the current culture is en-US:
' 6/12/2008 00:00:00
End Sub
'</datetime-parse-nodefault>

'<dateonly-parse>
Sub DateOnlyParseExample()
' Parse common date formats
Dim date1 = DateOnly.Parse("1/15/2025")
Dim date2 = DateOnly.Parse("January 15, 2025", CultureInfo.InvariantCulture)
Dim date3 = DateOnly.Parse("2025-01-15")

Console.WriteLine($"Parsed date: {date1}")
Console.WriteLine($"Parsed date: {date2.ToString("D")}") ' Long date format
Console.WriteLine($"Parsed date: {date3.ToString("yyyy-MM-dd")}")

' Parse with specific culture
Dim germanDate = DateOnly.Parse("15.01.2025", New CultureInfo("de-DE"))
Console.WriteLine($"German date: {germanDate}")
End Sub
'</dateonly-parse>

'<dateonly-parseexact>
Sub DateOnlyParseExactExample()
' Parse exact format
Dim exactDate = DateOnly.ParseExact("21 Oct 2015", "dd MMM yyyy", CultureInfo.InvariantCulture)
Console.WriteLine($"Exact date: {exactDate}")

' Parse ISO format
Dim isoDate = DateOnly.ParseExact("2025-01-15", "yyyy-MM-dd", CultureInfo.InvariantCulture)
Console.WriteLine($"ISO date: {isoDate}")

' Parse with multiple possible formats
Dim formats() As String = {"MM/dd/yyyy", "M/d/yyyy", "dd/MM/yyyy"}
Dim flexibleDate = DateOnly.ParseExact("1/15/2025", formats, CultureInfo.InvariantCulture, DateTimeStyles.None)
Console.WriteLine($"Flexible parse: {flexibleDate}")
End Sub
'</dateonly-parseexact>

'<timeonly-parse>
Sub TimeOnlyParseExample()
' Parse common time formats
Dim time1 = TimeOnly.Parse("14:30:15")
Dim time2 = TimeOnly.Parse("2:30 PM", CultureInfo.InvariantCulture)
Dim time3 = TimeOnly.Parse("17:45")

Console.WriteLine($"Parsed time: {time1}")
Console.WriteLine($"Parsed time: {time2.ToString("t")}") ' Short time format
Console.WriteLine($"Parsed time: {time3.ToString("HH:mm")}")

' Parse with milliseconds
Dim preciseTime = TimeOnly.Parse("14:30:15.123")
Console.WriteLine($"Precise time: {preciseTime.ToString("HH:mm:ss.fff")}")
End Sub
'</timeonly-parse>

'<timeonly-parseexact>
Sub TimeOnlyParseExactExample()
' Parse exact format
Dim exactTime = TimeOnly.ParseExact("5:00 pm", "h:mm tt", CultureInfo.InvariantCulture)
Console.WriteLine($"Exact time: {exactTime}")

' Parse 24-hour format
Dim militaryTime = TimeOnly.ParseExact("17:30:25", "HH:mm:ss", CultureInfo.InvariantCulture)
Console.WriteLine($"Military time: {militaryTime}")

' Parse with multiple possible formats
Dim timeFormats() As String = {"h:mm tt", "HH:mm", "H:mm"}
Dim flexibleTime = TimeOnly.ParseExact("2:30 PM", timeFormats, CultureInfo.InvariantCulture, DateTimeStyles.None)
Console.WriteLine($"Flexible time parse: {flexibleTime}")
End Sub
'</timeonly-parseexact>
End Module
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<RootNamespace>parsing_datetime</RootNamespace>
</PropertyGroup>

</Project>
2 changes: 1 addition & 1 deletion docs/standard/datetime/how-to-use-dateonly-timeonly.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: How to use DateOnly and TimeOnly
description: Learn about the DateOnly and TimeOnly structures in .NET.
ms.date: 12/05/2024
ms.date: 01/16/2026
dev_langs:
- "csharp"
- "vb"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<RootNamespace>dateonlytimeonly</RootNamespace>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
</PropertyGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<RootNamespace>ExampleProject</RootNamespace>
<TargetFramework>net9.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
</PropertyGroup>

</Project>
Loading
Loading