Namespaces and the Base Classes

Dates & Times

We start off by displaying the current date and time in various different formats, using this code:

namespace Wrox.SampleCode.CSharpPreview.ChBaseClasses
{
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.WinForms;
using System.Data;

public class FormDisplayDateTimes : System.WinForms.Form
{
... as before

/// <summary>
///    Summary description for FormDisplayDateTimes.
/// </summary>
   public FormDisplayDateTimes()
   {
      //
      // Required for Win Form Designer support
      //
 

      InitializeComponent();

      //
      // TODO: Add any constructor code after InitializeComponent call
      //
      DateTime dtCurrTime = DateTime.Now;
      AddItem("Current Time is " + dtCurrTime.ToString());
      AddItem("Year is " + dtCurrTime.Year.ToString());
      AddItem("Month is " + dtCurrTime.Month.ToString());
      AddItem("Day of month is " + dtCurrTime.Day.ToString());
      AddItem("Day of week is " + dtCurrTime.DayOfWeek.ToString());
      AddItem("Hour is " + dtCurrTime.Hour.ToString());
      AddItem("Minute is " + dtCurrTime.Minute.ToString());
      AddItem("Second is " + dtCurrTime.Second.ToString());
      AddItem("Millisecond is " + dtCurrTime.Millisecond.ToString());
      AddItem("ShortDateString is " + dtCurrTime.ToShortDateString());
      AddItem("LongDateString is " + dtCurrTime.ToLongDateString());
      AddItem("ShortTimeString is " + dtCurrTime.ToShortTimeString());
      AddItem("LongTimeString is " + dtCurrTime.ToLongTimeString());
   }

As explained earlier, we are adding our code to the constructor of the FormDisplayDateTimes class in our project. (FormDisplayDateTimes was Form1 in the generated code but we've changed its name to a more meaningful class name.)

We first instantiate a variable dtCurrTime of class DateTime, and initialize it using the static property of the DateTime class, Now, which returns the current date and time. We then use various properties, fields and methods to extract portions of the current date and time. This code produces the following output:

Next we will create another sample, which we'll call the FormTimeSpans sample. This shows how to add and take the differences between date-times. This is where the TimeSpan class comes in. The TimeSpan class represents a difference between two date-times. The following sample takes a DateTime, initialized to 1 January 2000, 12 pm, adds an interval of 4 days 2 hours 15 minutes to it, and displays the results along with information about the times and timespan.

...

public class FormTimeSpans : System.WinForms.Form
{
... as before

   public FormTimeSpans()
   {
      //
      // Required for Win Form Designer support
      //
      InitializeComponent();

      //
      // TODO: Add any constructor code after InitializeComponent call
      //

      // constructor: TimeSpan(days, hours, minutes, seconds)
      TimeSpan Span = new TimeSpan(4,2,15,0);
      
      // initialize date to 1 Jan 2000, 12 pm
      // constructor: DateTime(year,month,day,hours,minutes,seconds, 
      // milliseconds)
      DateTime dtOld = new DateTime(2000,1,1,12,0,0,0);

      DateTime dtNew = dtOld + Span;

      AddItem("Original date was " + dtOld.ToLongDateString() + 
              "  " + dtOld.ToShortTimeString());
      AddItem("Adding time span of " + Span.ToString());
      AddItem("Result is " + dtNew.ToLongDateString() + "  " +
               dtNew.ToShortTimeString());
      AddItem("");
      AddItem("Time span broken down is:");
      AddItem("Days: " + Span.Days.ToString());
      AddItem("Hours: " + Span.Hours.ToString());
      AddItem("Minutes: " + Span.Minutes.ToString());
      AddItem("Seconds: " + Span.Seconds.ToString());
      AddItem("Milliseconds: " + Span.Milliseconds.ToString());
      AddItem("Ticks: " + Span.Ticks.ToString());
      AddItem("");
      AddItem("TicksPerSecond: " + TimeSpan.TicksPerSecond.ToString());
      AddItem("TicksPerHour: " + TimeSpan.TicksPerHour.ToString());

   }

In this sample we see the new operator being used to construct DateTime and TimeSpan instances of given value. Both these classes have several constructors with different numbers of parameters depending on how precisely you wish to specify the time. We add the span on to the time and display the results. In displaying the results we use the ToLongDateString() method of the DateTime class to get the date in plain English, but the ToShortTimeString() method to get the time (using ToLongTimeString() would give us milliseconds as well). We then use various properties of the TimeSpan class to show the days, hours, minutes, seconds, milliseconds and ticks. Ticks are the smallest unit allowed by the TimeSpan class and measure one ten-millionth of a second, as indicated by a couple of static fields that give conversion factors, which we also display.

The above code gives this output:

You might also like...

Comments

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“The greatest performance improvement of all is when a system goes from not-working to working.” - John Ousterhout