Table of Contents

DateTimeExtensions Class

Definition

Namespace
Cuemon.Extensions
Assemblies
Cuemon.Extensions.Core.dll
Source
src/Cuemon.Extensions.Core/DateTimeExtensions.cs

Extension methods for the DateTime struct.

public static class DateTimeExtensions
Inheritance
object
DateTimeExtensions

Examples

DateTimeExtensions provides extension methods for DateTime including rounding, range checking, time-of-day classification, kind conversion, and Unix epoch round-tripping. This example creates UTC and local DateTime values and applies Floor to snap to the nearest hour, Ceiling to round up to the next hour, IsWithinRange for containment checks, and classification methods like IsTimeOfDayMorning and IsTimeOfDayEvening. It also converts between DateTimeKind values using ToUtcKind, ToLocalKind, and ToDefaultKind, and round-trips through Unix epoch seconds via ToUnixEpochTime and FromUnixEpochTime. Console output confirms each result, including the snapped timestamp, boolean range check, time-of-day flags, updated Kind values, and the restored timestamp.

using System;
using Cuemon;
using Cuemon.Extensions;

namespace MyApp.Examples;

public static class DateTimeExtensionsExample
{
    public static void Demonstrate()
    {
        var utc = new DateTime(2025, 6, 16, 14, 33, 22, DateTimeKind.Utc);
        var local = new DateTime(2025, 6, 16, 14, 33, 22, DateTimeKind.Local);

        var floorHour = utc.Floor(TimeSpan.FromHours(1));
        var ceilingHour = utc.Ceiling(TimeSpan.FromHours(1));
        var floorFifteenMinutes = utc.Floor(15, TimeUnit.Minutes);
        var roundedUp = utc.Round(TimeSpan.FromMinutes(30), VerticalDirection.Up);
        var isWithinRange = utc.IsWithinRange(new DateTimeRange(utc.AddHours(-1), utc.AddHours(1)));

        var isNight = new DateTime(2025, 6, 16, 22, 15, 0, DateTimeKind.Utc).IsTimeOfDayNight();
        var isMorning = new DateTime(2025, 6, 16, 6, 15, 0, DateTimeKind.Utc).IsTimeOfDayMorning();
        var isForenoon = new DateTime(2025, 6, 16, 10, 15, 0, DateTimeKind.Utc).IsTimeOfDayForenoon();
        var isAfternoon = utc.IsTimeOfDayAfternoon();
        var isEvening = new DateTime(2025, 6, 16, 19, 15, 0, DateTimeKind.Utc).IsTimeOfDayEvening();

        var utcKind = local.ToUtcKind();
        var localKind = utc.ToLocalKind();
        var unspecifiedKind = utc.ToDefaultKind();

        var unixTime = utc.ToUnixEpochTime();
        var restored = unixTime.FromUnixEpochTime();

        Console.WriteLine(floorHour.ToString("O"));
        Console.WriteLine(ceilingHour.ToString("O"));
        Console.WriteLine(floorFifteenMinutes.ToString("O"));
        Console.WriteLine(roundedUp.ToString("O"));
        Console.WriteLine(isWithinRange);
        Console.WriteLine($"{isNight}, {isMorning}, {isForenoon}, {isAfternoon}, {isEvening}");
        Console.WriteLine($"{utcKind.Kind}, {localKind.Kind}, {unspecifiedKind.Kind}");
        Console.WriteLine(restored.ToString("O"));
    }
}

Methods

Name Description
Ceiling(DateTime, double, TimeUnit)

Returns a DateTime value that is rounded towards positive infinity.

Ceiling(DateTime, TimeSpan)

Returns a DateTime value that is rounded towards positive infinity.

Floor(DateTime, double, TimeUnit)

Returns a DateTime value that is rounded towards negative infinity.

Floor(DateTime, TimeSpan)

Returns a DateTime value that is rounded towards negative infinity.

IsTimeOfDayAfternoon(DateTime)

Determines whether the specified value is within Afternoon.

IsTimeOfDayEvening(DateTime)

Determines whether the specified value is within Evening.

IsTimeOfDayForenoon(DateTime)

Determines whether the specified value is within Forenoon.

IsTimeOfDayMorning(DateTime)

Determines whether the specified value is within Morning.

IsTimeOfDayNight(DateTime)

Determines whether the specified value is within Night.

IsWithinRange(DateTime, DateTimeRange)

Determines whether the specified value is within range.

IsWithinRange(DateTime, DateTime, DateTime)

Determines whether the specified value is within range of min and max.

Round(DateTime, double, TimeUnit, VerticalDirection)

Returns a DateTime value that is rounded either towards negative infinity or positive infinity.

Round(DateTime, TimeSpan, VerticalDirection)

Returns a DateTime value that is rounded either towards negative infinity or positive infinity.

ToDefaultKind(DateTime)

Converts the specified value to a representation that is not specified as either local time or UTC.

ToLocalKind(DateTime)

Converts the specified value to a local time representation.

ToUnixEpochTime(DateTime)

Converts the specified value to an equivalent UNIX Epoch time representation.

ToUtcKind(DateTime)

Converts the specified value to a Coordinated Universal Time (UTC) representation.