Working in C# using DateOnly and TimeOnly

Date and time are important parts of many programs, and controlling them in C# has traditionally meant utilizing the DateTime structure. C# 10.0, on the other hand, added two new useful functions: DateOnly and TimeOnly. These types offer a more elegant and precise approach of working with date-only and time-only variables. We’ll look at how to use DateOnly and TimeOnly in C# apps in this blog post.

The tools that I have leveraged for the blog are given below.

  1. VS 2022 Community Edition
  2. .NET 6.0
  3. Console App

DateOnly in C#

DateOnly is designed to work with date-only values, focusing exclusively on the year, month, and day components. It simplifies working with dates by removing the time and time zone information, making your code more precise and readable.

Here’s how you can create a DateOnly instance.

public static void DateOnlyExample()
            // <SnippetDateOnly>
            DateOnly dateOnly = new DateOnly(2020, 12, 25);
            Console.WriteLine($"DateOnly Sample :  {dateOnly}");
            // </SnippetDateOnly>

Another sample will create a DateOnly instance from an existing DateTime type.

public static void DateOnlyFromDateTimeExample()
            // <SnippetDateOnlyFromDateTime>

            var dateOnly = DateOnly.FromDateTime(DateTime.Now);
            Console.WriteLine($"DateOnly From DateTime :  {dateOnly}");
            // </SnippetDateOnlyFromDateTime>

Benefits of DateOnly

  • Clarity: When you use DateOnly, your code explicitly communicates that you are working with date-only data. This enhances code readability and prevents confusion, especially when you don’t need time-related information.
  • Immutability: DateOnly instances are immutable, meaning their values cannot be modified once they are created. This immutability ensures data integrity and prevents accidental changes.
  • No Time Zone Hassles: With DateOnly, you don’t need to deal with time zones or daylight-saving time adjustments. It focuses solely on the date component, making your code more straightforward.

TimeOnly in C#

TimeOnly extends DateOnly by allowing you to work with time-only values. It supports hours, minutes, seconds, and fractions of a second (milliseconds, microseconds, or nanoseconds), allowing you to accurately represent time of day data.

Here’s how you can create a TimeOnly instance.

public static void TimeOnlyExample()
            // <SnippetTimeOnly>
            TimeOnly timeOnly = new TimeOnly(12, 30, 45);
            Console.WriteLine($"TimeOnly Sample :  {timeOnly}");
            // </SnippetTimeOnly>

Another sample will create a TimeOnly instance from an existing DateTime type.

public static void TimeOnlyFromDateTimeExample()
            // <SnippetTimeOnlyFromDateTime>

            var timeOnly = TimeOnly.FromDateTime(DateTime.Now);
            Console.WriteLine($"TimeOnly From DateTime :  {timeOnly}");
            // </SnippetTimeOnlyFromDateTime>

Benefits of TimeOnly

  • Precision: When you work with time-only data, TimeOnly provides a high level of precision, allowing you to capture time intervals and durations accurately.
  • Immutability: Like DateOnly, TimeOnly instances are immutable, ensuring that your time-related values remain consistent throughout your code.
  • Enhanced Code Readability: Using TimeOnly clearly communicates that you are dealing with time-of-day data, improving code readability, and reducing the risk of errors.

Combining DateOnly and TimeOnly

While DateOnly and TimeOnly are primarily intended for date-only and time-only values, respectively, you can still combine them to work with date and time together. For instance, you can use a DateOnly for the date portion and a TimeOnly for the time portion, offering the benefits of both types.

Console.WriteLine("Combine DateOnly and TimeOnly Examples!");

DateOnly dateOnly = new DateOnly(2020, 12, 25);
TimeOnly timeOnly = new TimeOnly(12, 30, 45);
DateTime combinedDateTime = dateOnly.ToDateTime(timeOnly);

Console.WriteLine($"Combined DateTime :  {combinedDateTime}");


DateOnly and TimeOnly are valuable additions to the C# language, making it easier and more precise to work with date-only and time-only values. By using these types in your applications, you can enhance code clarity, readability, and maintainability, all while avoiding common pitfalls associated with managing date and time components manually. Whether you’re building a calendar application, managing schedules, or simply working with dates and times in your code, DateOnly and TimeOnly are powerful tools to have in your C# toolkit.

Best and Most Recommended ASP.NET Core 8 Hosting

Fortunately, there are a number of dependable and recommended web hosts available that can help you gain control of your website’s performance and improve your ASP.NET Core 8 web ranking. HostForLIFEASP.NET is highly recommended. In Europe, HostForLIFEASP.NET is the most popular option for first-time web hosts searching for an affordable plan.

Their standard price begins at only € 3.49 per month. Customers are permitted to choose quarterly and annual plans based on their preferences. HostForLIFEASP.NET guarantees “No Hidden Fees” and an industry-leading ’30 Days Cash Back’ policy. Customers who terminate their service within the first thirty days are eligible for a full refund.

By providing reseller hosting accounts, HostForLIFEASP.NET also gives its consumers the chance to generate income. You can purchase their reseller hosting account, host an unlimited number of websites on it, and even sell some of your hosting space to others. This is one of the most effective methods for making money online. They will take care of all your customers’ hosting needs, so you do not need to fret about hosting-related matters.