Za razliku od klase String koja predstavlja rad sa tekstom i klase Math koja predstavlja rad sa matematičkim formulama, DateTime struktura predstavlja rad sa datumima i vremenom. Međutim, DateTime nije klasa već struktura. To znači da DateTime nije referentni tip podataka, već vrednosni tip podataka. To takođe znači, da kad god radite sa datumima; u memoriji se pravi nova instanca strukture DateTime što može uticati na performanse programa. U C# programskom jeziku ne postoji Date tip podataka kao u Visual Basic-u već je Date samo properti strukture DateTime.
( Za datum i vreme se koristi DateTime struktura u C# programskom jeziku )
Type type = typeof(DateTime);
if (type.IsValueType)
WriteLine("True"); else WriteLine("False"); // Result True
Ukoliko
ne izvršite inicijalizaciju strukture DateTime, jednostavno će te dobiti
minimalnu vrednost.
DateTime date = new DateTime();
WriteLine(date.ToString()); // 1/1/0001 12:00:00 AM
WriteLine(DateTime.MaxValue.ToString()); // 12/31/9999 11:59:59 PM
U situacijama kad vam treba datum koji će predstavljati vrednost sa kojom možete reći korisniku da datum nije pronađen, ili da hoćete da je datum jednak 0; što nije moguće za strukturu DateTime u kodiranju; tada koristite minimalnu vrednost strukture DateTime.
if (date == DateTime.MinValue) WriteLine("False"); else WriteLine("True"); //
Result False
Kako da inicijalizujemo neki određen datum?
Postoji više načina da se inicijalizuje određeni datum u zavisnosti šta vam konkretno treba.
date = new DateTime(2016, 1, 14); // Serbian New Year
date = DateTime.Now; // Now
date = DateTime.UtcNow; // UTC
date = DateTime.Today; // Today
date = DateTime.Today.AddDays(-1); // Yesterday
date = DateTime.Today.AddDays(+1); // Tomorrow
Ukoliko želite da prikažete datum, kako se prikazuje na srpskom jeziku, neophodno je da koristite metodu CreateSpecificCulture klase CultureInfo:
WriteLine(date.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("sr-SR")));
WriteLine("Date: " + date.Date);
WriteLine("Date: " + date.ToString("MM.dd.yyyy"));
WriteLine("Time: " + date.TimeOfDay);
WriteLine("Time: " + date.ToString("hh:mm:ss"));
date = new DateTime(date.Year, 1, 1);
Prestupna godina je godina u kojoj mesec Februar ima 29 dana. U principu to je svaka godina deljiva sa 4, ali vi imate metodu IsLeapYear da vam potvrdi da li je godina prestupna.
WriteLine(DateTime.IsLeapYear(date.Year).ToString());
( String formati u C# programskom jeziku za prikaz datuma )
string birth = "9/1/1975 12:15:00 AM";
bool correct = DateTime.TryParse(birth,
out date);
if(correct) WriteLine("Manuel's date of birth: " + date);
Pogledajte kako da prikažete samo određene članove datuma ili vremena. Za primer sam stavio svoj vlastiti datum rođenja. 1 Septembar 1975 godine u 0:15 časova.
WriteLine(date.DayOfWeek); // Monday
WriteLine(date.Day); // 1
WriteLine(date.Month + " or " + date.ToString("MMMM")); // 9 or September
WriteLine(date.Year); // 1975
WriteLine(date.Hour); // 0
WriteLine(date.Minute); // 15
WriteLine(date.Second); // 0
Ukoliko na primer želim da znam koliko upravo imam minuta umesto godina, to se takođe može izvesti malim trikom.
TimeSpan old = DateTime.Today - date;
WriteLine(old.TotalMinutes); // 21252945 Minutes
U ovom postu sam vam predstavio samo neke osnovne mogućnosti koje možete da uradite zahvaljujući strukturi DateTime, inače bi se mogla napisati cela knjiga na ovu temu koliko samo postoji kombinacija String formata za datume i vreme. Zato vam savetujem da malo istražujete MSDN - Microsoft Developer Network biblioteku. Prekucajte sebi sledeći kod programa; skoro u većini programerski poslova će se od vas tražiti da u vašem kodu radite sa vremenom i datumima.
using System;
using static System.Console;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DateTimeStructure
{
class Program
{
static void Main(string[] args)
{
WriteLine("DATETIME STRUCT" + Environment.NewLine);
// Check for DateTime type
Write("Is DateTime value
type? ");
Type type = typeof(DateTime);
if
(type.IsValueType) WriteLine("True"); else WriteLine("False"); // Result True
// Minimum and Maximum value of the DateTime struct
DateTime date = new DateTime();
WriteLine(Environment.NewLine + "Minimum DateTime
value: "
+ date.ToString()); //
1/1/0001 12:00:00 AM
WriteLine("Maximum DateTime
value: "
+ DateTime.MaxValue.ToString()); // 12/31/9999 11:59:59 PM
// Use Minimum value of DateTime for no date!
Write(Environment.NewLine + "Is there date? ");
if
(date == DateTime.MinValue) WriteLine("False"); else WriteLine("True");
// Initialize date
date = new DateTime(2016, 1, 14);
WriteLine(Environment.NewLine + "Initialize date:
" + date);
WriteLine("Initialize date for
Serbia: "
+ date.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("sr-SR")));
date = DateTime.Now;
WriteLine(Environment.NewLine + "Day Now: " + date);
date = DateTime.UtcNow;
WriteLine("Day Now UTC: " + date + Environment.NewLine);
date = DateTime.Today;
WriteLine("Today: " + date);
date = DateTime.Today.AddDays(-1);
WriteLine("Yesterday: " + date);
date = DateTime.Today.AddDays(+1);
WriteLine("Tomorrow: " + date);
ReadLine();
Clear();
// Present DateTime Properties
date = new DateTime(date.Year, 1, 1);
WriteLine("First date in 2016
year: "
+ date);
WriteLine("Is leap year: " + DateTime.IsLeapYear(date.Year).ToString()
+ Environment.NewLine);
string birth = "9/1/1975 12:15:00 AM";
bool
correct = DateTime.TryParse(birth, out date);
if(correct)
WriteLine("Manuel's
date of birth: "
+ date);
WriteLine("Date: " + date.ToString("MM.dd.yyyy")); // 9.1.1975
WriteLine("Time: " + date.ToString("hh:mm:ss tt")); // 12:15:00 AM
WriteLine(Environment.NewLine + "Day: " + date.DayOfWeek); // Monday
WriteLine("Day: " + date.Day); // 1
WriteLine("Month: " + date.Month + " or " + date.ToString("MMMM")); // 9 or September
WriteLine("Year: " + date.Year); // 1975
WriteLine(Environment.NewLine + "Hours: " + date.Hour); // 0
WriteLine("Minutes: " + date.Minute); // 15
WriteLine("Seconds: " + date.Second + Environment.NewLine); // 0
TimeSpan old = DateTime.Today - date;
WriteLine("Manuel is " + old.TotalMinutes + " Minutes old."); // 21252945
ReadKey();
}
}
}
Kad pokrenete navedeni program on će vam prikazati slične rezultate:
DATETIME STRUCT
Is DateTime value type? True
Minimum DateTime value: 1/1/0001 12:00:00 AM
Maximum DateTime value: 12/31/9999 11:59:59 PM
Is there date? False
Initialize date: 1/14/2016 12:00:00 AM
Initialize date for Serbia: 14.1.2016. 00.00.00
Day Now: 1/28/2016 12:47:31 PM
Day Now UTC: 1/28/2016 11:47:31 AM
Today: 1/28/2016 12:00:00 AM
Yesterday: 1/27/2016 12:00:00 AM
Tomorrow: 1/29/2016 12:00:00 AM
First date in 2016 year: 1/1/2016 12:00:00 AM
Is leap year: True
Manuel's date of birth: 9/1/1975 12:15:00 AM
Date: 09.01.1975
Time: 12:15:00 AM
Day: Monday
Day: 1
Month: 9 or September
Year: 1975
Hours: 0
Minutes: 15
Seconds: 0
Manuel is 21252945 Minutes old.
Day: 1
Month: 9 or September
Year: 1975
Hours: 0
Minutes: 15
Seconds: 0
Manuel is 21252945 Minutes old.
Kako to sve izgleda možete pogledati i na video-u:
( C# 6.0 Tutorial - Fundamentals - 36. DateTime Struct )
No comments:
Post a Comment