Members

Technology Zones

IBM Learning Center

Articles

Hosted By

MaximumASP

Info

Book Cover C# Programming with the Public Beta
40025 times
Rated
Read 40,025 times

Contents

Related Categories

Namespaces and the Base Classes - Dates & Times

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:

Comments

  • Re: [1676] Namespaces and the Base Classes

    Posted by cdm on 06 Jun 2008

    Are you kidding? System.IO.File and System.IO.Directory are static classes. They can't be instantiated. Did any of the authors or editors bother running this code to see if it would work?

  • MSMQ TriggerEvents C#

    Posted by amaretto on 04 Jun 2003

    I'm struggeling with the implementation of simple asynchroneous receive in C# :
    aQueue.enableNotification(eventObject, ref cursor, ref timeout)

    cursor and timeout are values (int) that can be retr...

  • Mistakes?

    Posted by mitzvah on 13 Nov 2002

    After spend a whole afternoon testing code in this article( they didn't work), I found this in msdn:
    [b]All methods of the Directory class are static and can therefore be called without having an ins...