Search Forum
(53671 Postings)
Search Site/Articles

Archived Articles
712 Articles

C# Books
C# Consultants
What Is C#?
Download Compiler
Code Archive
Archived Articles
Advertise
Contribute
C# Jobs
Beginners Tutorial
C# Contractors
C# Consulting
Links
C# Manual
Contact Us
Legal

GoDiagram for .NET from Northwoods Software www.nwoods.com


 
Printable Version

C# DateTime Structure By S.Thangaraju

Here is an example of how the DateTime Structure works for C#. It's extremely basic and very easy to follow.

/*
This program finds out your Age using the DateTime structure in C#.
*/

using System;

class DOB{

	private DateTime dtDob; 
	private DateTime dtNow;
	private DateTime dtAge;
	private int intDay;
	private int intMonth;
	private int intYear;
	private int intHour;
	private int intMinute;
	private TimeSpan tsAge;
	private int intAgeYear;
	private int intAgeMonths;
	private int intAgeDays;
	private int intAgeHours;
	private int intAgeMinutes;
	
	
	public static void Main (String[] args) {
		
		DOB objDob=new DOB();	
		objDob.getDob();
		objDob.createDateObjects();
		
		Console.WriteLine("Your Age in Years :" + objDob.getAgeInYears());
		Console.WriteLine("Your Age in Months :" + objDob.getAgeInMonths());
		Console.WriteLine("Your Age in Days :" + objDob.getAgeInDays());
		Console.WriteLine("Your Age in Hours : " + objDob.getAgeInHours());
		Console.WriteLine("Your Age in Minutes : " + objDob.getAgeInMinutes());
		Console.WriteLine("Your Accurate Age is : " + objDob.getAgeInYears() + " Years " +
			objDob.getMonthDiff() + " months " + objDob.getDayDiff() + " days");
	}

	/* get the date */
	
	private void getDob() {
	
		try {

			Console.Write("Enter the Day u were born : " );
			intDay=Console.ReadLine().ToInt32();
			Console.Write("Month : ");
			intMonth=Console.ReadLine().ToInt32();;
			Console.Write("Year(yyyy) : ");
			intYear=Console.ReadLine().ToInt32();
			Console.Write("Hour(0-23) : ");
			intHour=Console.ReadLine().ToInt32();
			Console.Write("Minute(0-59) : ");
			intMinute=Console.ReadLine().ToInt32();
		}

		catch (Exception e) {
			Console.WriteLine(e.StackTrace);
			Environment.Exit(0);
		}
	}
	
	/* create the date objects */
	private void createDateObjects() {
	
		dtDob=new DateTime(intYear,intMonth,intDay,intHour,intMinute,0);
		dtNow=DateTime.Now;
		
		if (DateTime.Compare(dtNow,dtDob)==1)
			tsAge=dtNow.Subtract(dtDob);
		else {
			Console.WriteLine("Future dates cannot be entered.");
			Environment.Exit(0);
		}
		
		dtAge=new DateTime(tsAge.Ticks);	
		Console.WriteLine("Your date of birth :" + dtDob.Format("F",null));
	
	}
	
	/*  calculates the age in Years */
	private int getAgeInYears() {
		intAgeYear=dtAge.Year-1;
		return intAgeYear;
	}

	/* calculates the age in months */
	private int getAgeInMonths() {
		intAgeMonths=intAgeYear*12;
		intAgeMonths=intAgeMonths+(dtAge.Month-1);
		return intAgeMonths;
	}

	/* calculates the age in days */
	private int getAgeInDays() {
		if (dtDob.Year==dtNow.Year) {
			intAgeDays=dtNow.DayOfYear-dtDob.DayOfYear;
		}
		else {
			if(DateTime.IsLeapYear(dtDob.Year))
				intAgeDays=366-dtDob.DayOfYear;
			else
				intAgeDays=365-dtDob.DayOfYear;

			for (int i=dtDob.Year+1;i < dtNow.Year;i++) {
				if (DateTime.IsLeapYear(i)) 
					intAgeDays+=366;
				else
					intAgeDays+=365;
			}

			intAgeDays+=dtNow.DayOfYear;
		}
		return intAgeDays;
	}
	
	/* calculates the age in Hours */
	private int getAgeInHours() {
		intAgeHours=getAgeInDays() * 24;
		intAgeHours=intAgeHours+(dtNow.Hour-dtDob.Hour);
		return intAgeHours;
	}
	
	/* calculates the age in Minutes */
	private int getAgeInMinutes() {
		intAgeMinutes=getAgeInHours() * 60;
		intAgeMinutes=intAgeMinutes+(dtNow.Minute-dtDob.Minute);
		return intAgeMinutes;
	}
	
	/* calculates the month part of the accurate Age */
	private int getMonthDiff() {
		return getAgeInMonths()%12;
	}
	
	/* calculates the day part of the accurate Age */
	private int getDayDiff() {
		int intDayTemp1=getAgeInDays();
		int intDayTemp2;
		int intTempYear;
		int intTempMonth;
		int intTempDay=intDay;
		
		if (dtNow.Year!=dtDob.Year) {
				
			if (1==dtNow.Month) {
				intTempYear=dtNow.Year-1;
				intTempMonth=12;
			}
			else {
				if(dtNow.Day < intTempDay)
					intTempMonth=dtNow.Month-1;
				else {
					intTempMonth=dtNow.Month;
					intTempDay=1;
				}
				intTempYear=dtNow.Year;
			}
		}
		else {
			if (1==dtNow.Month || dtDob.Month==dtNow.Month)
				return getAgeInDays();
			else {
				if(dtNow.Day < intTempDay)
					intTempMonth=dtNow.Month-1;
				else {
					intTempMonth=dtNow.Month;
					intTempDay=1;
				}
			}
			intTempYear=intYear;
		}
		
		dtNow=new DateTime(intTempYear,intTempMonth,intDay);
			
		intDayTemp2=getAgeInDays();

		return intDayTemp1-intDayTemp2;
	}
}

/*
Result
------
D:\progs>dob
Enter the Day u were born : 1
Month : 1
Year(yyyy) : 2000
Hour(0-23) : 1
Minute(0-59) : 4
Your date of birth :Saturday, January 01, 2000 1:04:00 AM
Your Age in Years :1
Your Age in Months :17
Your Age in Days :520
Your Age in Hours : 12489
Your Age in Minutes : 749375
Your Accurate Age is : 1 Years 5 months 3 days
*/