Dátummal és idővel viszonylag gyakran kell dolgozni a desktop programokban (is), így a C# programozás során is. A C# ehhez egész jó eszközöket ad, de azért nem minden egyértelmű elsőre. Ezért most megnézünk pár hasznos tippet.
A hét első napjának dátuma
using System.Globalization;
//tetszőleges dátumhoz kapcsolódóan megmondja, hogy mi volt a hét első napjának dátuma public static DateTime het_elso_napja(DateTime date)
{
DayOfWeek het_napja = CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;
int kulonbseg = het_napja - date.DayOfWeek;
DateTime het_elso_napja = date.AddDays(kulonbseg);
return het_elso_napja;
}
//példa a használatra -- DateTime.Now vagyis az aktuális naphoz képest a hét első napja, amit akár át is alakíthatunk tetszőleges dátum stringgé string datum = het_elso_napja(DateTime.Now).ToString("yyyy.MM.dd");
A hét melyik vagy hányadik napja ez a dátum?
//a hét napjának neve DateTime datum = new DateTime(2018, 10, 28); //az adott dátum - év, hónap, nap
var het_napja_nevvel = datum.DayOfWeek; //a hét napja számmal (hányadik nap a héten?)
//FIGYELEM: a vasárnap alapértelmezésben a 0. sorszámot kapja, nem a 7-et! var het_napja_szammal = datum.DayOfWeek.ToString("d");
A mai nap megszerzése string-ként
string ma = DateTime.Now.ToString("yyyy-MM-dd"); //tetszőleges dátum formátum megadható a ToString-nek, tehát pl.: ma = DateTime.Now.ToString("yyyy.MM.dd"); //yyyy év, MM hónap, dd napEredménye a mai nap dátuma string-ként: 2018.10.27
DateTimePicker egyedi dátum formátum
dtp_end.Format = DateTimePickerFormat.Custom; //egyedi formátum engedélyezése dtp_end.CustomFormat = "yyyy.MM.dd. hh:mm:ss"; //formátum beállítása időbélyeggel - év:hónap:nap óra:perc:másodperc - nem kötelező mind
Dátumok kivonása egymásból
string kezdo_nap = dtp_kezdo.Value.ToString("yyyy-MM-dd"); //a kezdő dátum egy string, ami most DateTimePicker-ből származik string zaro_nap = dtp_zaro.Value.ToString("yyyy-MM-dd"); //a vég dátum egy string, ami most DateTimePicker-ből származik //ha a dátum nem dátum típus, akkor parse-olni kell dátumként -- ha az, akkor a parse elhagyható //TimeSpan típusban tárolódik TimeSpan kulonbseg = DateTime.Parse(zaro_nap) - DateTime.Parse(kezdo_nap); //napok, percek, stb kinyerése double napok = kulonbseg.TotalDays; double percek = kulonbseg.TotalMinutes; //https://msdn.microsoft.com/en-us/library/system.timespan(v=vs.110).aspx MessageBox.Show(percek.ToString());
Hónap utolsó napja
var utolso_nap = DateTime.DaysInMonth(2015, 11); //melyik év, hónapról van szó?
//egy számot ad vissza, amely a hónap utolsó napja, tehát például 30, 31
Hozzáadás vagy kivonás egy dátumból
//többféle módon megoldható, példa DateTimePicker-rel való használathoz //egy nap hozzáadása a mai naphoz datetimepicker1.Value = DateTime.Today.AddDays(1); //egy nap kivonása a mai napból datetimepicker1.Value = DateTime.Today.AddDays(-1); /*az AddDays-szel teljesen megegyező módon használható az AddHours AddMilliseconds AddMinutes AddMonths AddSeconds AddYears De használható a pontos idővel is:*/ datetimepicker1.Value = DateTime.Now.AddDays(1); datetimepicker1.Value = DateTime.Now.AddMinutes(10); datetimepicker1.Value = DateTime.Now.AddMinutes(-10);