Manipulating DateTime values is one of the most common operations in a lot of applications. In this article, we are going to learn about the DateTime operators in C# that can come in handy when manipulating DateTime values in .NET (Core).
Let’s start.
Addition
This operator returns a new DateTime
value as a result of adding a time interval to a DateTime
value.
To keep our examples simple, let’s define some variables that we’re going to use in all our examples:
var dt = new DateTime(2022, 1, 1); var dt1 = new DateTime(2023, 1, 1); var ts = new TimeSpan(20, 4, 2, 1);
The dt
object holds a value of 01/01/2022 12:00:00 AM while the ts
object holds a value of 20 days, 4 hours, 2 minutes, and 1 second.
There are different ways that can come in handy when adding two DateTime
values.
We can implement it by adding two DateTime
values using the +
sign or we can make use of the inbuilt Add
function. We can use the inbuilt methods AddDays
, AddYears
, AddMinutes
, and AddSeconds
functions to achieve the same result:
var expected = new DateTime(2022, 1, 21, 4, 2, 1); Assert.AreEqual(expected, dt + ts); Assert.AreEqual(expected, dt.Add(ts)); Assert.AreEqual(expected, dt.AddDays(20).AddHours(4).AddMinutes(2).AddSeconds(1));
Equality
As the name suggests, this operator assesses whether two DateTime
values are equal and returns true
if they are.
We can implement this operator by using the ==
sign, or we can compare two DateTime
values using an inbuilt Equals
function:
var dt = new DateTime(2022, 1, 1); Assert.IsTrue(dt == dt); Assert.IsTrue(dt.Equals(dt));
GreaterThan
This operator assesses whether a given DateTime
value is later than another given DateTime
value. The operator returns true
if it is.
We can implement this operator by using the >
sign or we can utilize the inbuilt Compare
and CompareTo
functions:
Assert.IsTrue(dt1 > dt); Assert.AreEqual(1, DateTime.Compare(dt1, dt)); Assert.AreEqual(1, dt1.CompareTo(dt));
These functions compare two DateTime
values and return int
values. A value of 1 means that a date value 01/01/2023 12:00:00 AM is later than a date 01/01/2022 12:00:00 AM.
GreaterThanOrEqual
The goal of this operator is to assess whether a given DateTime
value is later than or equal to another given DateTime
value, and if it is, the result is true
.
We can implement this operator either by using the >=
sign or by using the inbuilt Compare
and CompareTo
functions:
Assert.IsTrue(dt1 >= dt); Assert.AreEqual(0, DateTime.Compare(dt, dt)); Assert.AreEqual(0, dt.CompareTo(dt));
A value of 0 means two dates 01/01/2022 12:00:00 AM and 01/01/2022 12:00:00 AM are equal. On the other hand, a value of 1 means that a date value 01/01/2023 12:00:00 AM is later than a date 01/01/2022 12:00:00 AM.
Inequality
As the name of the operator suggests, this operator checks whether two DateTime
values are not equal. If the two DateTime
values are not equal, this operator returns true
.
We can implement this operator either by using the !=
sign or by negating the value of the Equals
inbuilt function:
Assert.IsTrue(dt != dt1); Assert.IsTrue(!dt.Equals(dt1));
LessThan
This operator assesses whether a given DateTime
value is earlier than another DateTime
value, and if it is, the operator returns true
.
We can implement this operator in two ways, the first being by using the <
operator or we can use the inbuilt Compare
and CompareTo
functions that we’ve used for GreaterThan
and GreaterThanOrEqual
:
Assert.IsTrue(dt < dt1); Assert.AreEqual(-1, DateTime.Compare(dt, dt1)); Assert.AreEqual(-1, dt.CompareTo(dt1));
A value of -1 means, a date 01/01/2022 12:00:00 AM is less than a later date 01/01/2023 12:00:00 AM.
LessThanOrEqual
This operator assesses whether a given DateTime
value is earlier than or equal to another DateTime
value, and if it is, the operator returns true
.
This operator can be implemented using the <=
sign, or we can use the inbuilt Compare
and CompareTo
here as well:
Assert.IsTrue(dt <= dt1); Assert.AreEqual(0, DateTime.Compare(dt, dt)); Assert.AreEqual(0, dt.CompareTo(dt));
Subtraction
This operator subtracts a DateTime
value or a TimeSpan
value from another DateTime
value and it has two overloads.
API | Description | Request body | Request response |
---|---|---|---|
POST api/resources | Create a new resource | Resource | Created resource |
Just as the addition operator, we can implement the subtraction operator by using the -
sign or the Subtract
inbuilt function as. On top of that, we can also pass the negative TimeSpan
value while using the inbuilt Add
function:
var expected = new DateTime(2021, 12, 11, 19, 57, 59); Assert.AreEqual(expected, dt - ts); Assert.AreEqual(expected, dt.Subtract(ts)); Assert.AreEqual(expected, dt.Add(-ts));
The result of subtracting a TimeSpan
value from a DateTime
value is a DateTime
object whose value is 12/11/2021 7:57:59 PM in this case.
Conclusion
We’ve learned how to manipulate DateTime values with DateTime operators in C#. The article discusses how to manipulate those values through operators +
and -
as well as through the use of inbuilt functions Add
,Subtract
,Compare
, etc.