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.Â