This lesson will deal with a complex type that is related to DateTime, called TimeSpan. The TimeSpan type represents the amount of time elapsed between two DateTime objects. For example, if you want to determine how long you’ve been alive you could use today’s date, along with your birthday, and the elapsed time in between would be represented using TimeSpan.

Step 1: Create a New Project

Begin by opening the provided project, or creating a project, calling it “CS-ASP_015,” and setting up Default.aspx with the following Server Controls, and programmatic IDs:

  1. okButton

  2. resultLabel

cs-asp-015---working-with-spans-of-time.001

In the okButton_Click event, create a TimeSpan variable and assign it the result of the TimeSpan.Parse() method, similar to how we used the DateTime.Parse():

cs-asp-015---working-with-spans-of-time.002

You see here that the Parse() method takes in a string input, but the hint as to what this method does is unclear. To better understand what we can use as a valid input argument in this method, let’s research it by navigating to Microsoft’s documentation for this method:

http://is.gd/timespan

The most important documentation on this page shows us exactly how to format the string argument:

“The s parameter contains a time interval specification in the form:

[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]

Elements in square brackets ([ and ]) are optional. One selection from the list of alternatives enclosed in braces ({ and }) and separated by vertical bars (|) is required. The following table describes each element.”

Elements

Using this guide, write out the intended formatting in a comment as a reminder. Pay extra care to the particular separator this method demands for each time element in the string – either a colon (:), or a period (.) :

cs-asp-015---working-with-spans-of-time.003

Tip: This string appears to be formatted arbitrarily, and it appears that way because it is! Actually, to be precise, the programmer who wrote this method decided, somewhat arbitrarily, on this particular string formatting that the method accepts. As such, this is not a syntax pattern specific to C#.

Step 2: Use TimeSpan.Parse() to Return a TimeSpan

Using the comment as a guide, write an acceptable set of time elements as a string input for this method:

cs-asp-015---working-with-spans-of-time.006

This is essentially assigning myTimeSpan with a TimeSpan that represents 1 Day, 2 Hours, 3 Minutes, and 30.5 Seconds. This doesn’t appear immediately useful, so let’s combine a TimeSpan with a DateTime to demonstrate its practical use:

What this is doing is:cs-asp-015---working-with-spans-of-time.007

  1. Store a DateTime – returned for the Parse() method – into myBirthday

  2. Take the DateTime given by DateTime.Now – which is the current date – and call the Subtract() method from it, inputting myBirthday as the required DateTime argument. And then store the returned result of that method into myAge.

That sequence may seem convoluted and that is partly because it mentions concepts that we haven’t completely covered yet. However, the code is represented in a way that is readable and, hopefully, clearly communicates its intent.

Tip: You can add a link to important documentation directly in your code by making it a comment:

TimeSpan Link

Now, by pressing ctrl+left-click on the link, you can view the web page directly inside of Visual Studio!

Step 3: Access Properties Available to a TimeSpan Variable

Now that we have a TimeSpan object, stored in myAge, we can comb through various properties of that TimeSpan (shown with the Intellisense icon that looks like a wrench):

cs-asp-015---working-with-spans-of-time.009

The most interesting option from this list of methods and properties is to output the total days/months/hours within a given TimeSpan. Let’s output the TotalDays property that, because it is a double, needs to be converted to a string with ToString():

cs-asp-015---working-with-spans-of-time.010

cs-asp-015---working-with-spans-of-time.011

With that, you have most of what you need to know about working with time in C#. With these two types – DateTime and TimeSpan – you will be able to represent, both, a specific moment of time and an elapsed period of time between two moments, as well as the various operations you can perform on these two time elements. Keep these concepts in mind as we continue forward. Good job!


Lessons in this Course