Skip to content

[API Proposal]: DateTimeOffset and TimeSpan mod #123851

@Thaina

Description

@Thaina

Background and motivation

For simplifying calculation of datetime and timespan without some fraction or calculate cron repeat I would like to suggest adding % operator for DateTimeOffset and TimeSpan (DateTime too ?)

API Proposal

namespace System;

public class DateTimeOffset
{
    public static DateTimeOffset operator %(DateTimeOffset dateTimeOffset, TimeSpan timeSpan)
    {
          return dateTimeOffset - TimeSpan.FromTicks(dateTimeOffset.Ticks % timeSpan.Ticks);
    }
}

public class TimeSpan 
{
    public static TimeSpan operator %(TimeSpan left, TimeSpan right)
    {
          return left - TimeSpan.FromTicks(left.Ticks % right.Ticks);
    }
}

API Usage

Console.WriteLine(DateTimeOffset.Now.TimeOfDay); // 08:53:12.4048276
Console.WriteLine((DateTimeOffset.Now % TimeSpan.FromSeconds(1))).TimeOfDay); // 08:53:12
Console.WriteLine((DateTimeOffset.Now % TimeSpan.FromSeconds(5))).TimeOfDay); // 08:53:10
Console.WriteLine((DateTimeOffset.Now % TimeSpan.FromMinutes(1))).TimeOfDay); // 08:53:00

Alternative Designs

var now = DateTimeOffset.Now;
now -= TimeSpan.FromTicks(now.Ticks % TimeSpan.FromSeconds(5).Ticks);

Risks

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions