Delo z datumi in časi v C#

Delo z datumi in časi v C#

Avtor: pred. M.Lokar, prenos v NAUK Alja Gligić, Tjaša Panič

Struktura

Struktura je sestavljeni podatkovni tip, v kateri so združeni podatki različnih tipov. (npr. podatki o krogu, podatki o avtomobilu, …)

Strukture so spremenljivke vrednostnega tipa. To pomeni, da novo spremenljivko strukture običajno deklariramo kot običajno vrednost spremenljivke, torej brez uporabe operatorja new.

V strukturo lahko zapišemo tude metode, ki operirajo nad komponentami znotraj strukture.

Splošna deklaracija strukture :

struct ImeStrukture

{

public tipKomponente1 ImeKomponente1

public tipKomponente2 ImeKomponente2

} ;

Osnove dela z datumi in časi

Za nastavitev datumov in časa se v C# uporablja struktura DateTime.

Spremenljivke tega tipa lahko hranijo podatke o datumi in času obenem.

Deklaracija spremenljivke tipa DateTime je:

- DateTime imeSpremenljivke;

Objekte tipa DateTime lahko prikažemo v obliki stringa oz. jih formatiramo. Za formatiranje datuma in časa pa uporabljamo metodo Format razreda String in metodo ToString.

Ustvarjanje objektov tipa DateTime

Nove objekte tipa DateTime lahko ustvarimo na več načinov :

  • z lastnostmi Now, Today, UtcNow:

UTC– univerzalni koordinatni čas, ki je enak v vseh časovnih pasovih, ne glede na poletni in zimski čas.

Razlika med UtcNow in Now :

- DateTime.UtcNow nam pove čas in datum kot kaže univerzalni koordinatni čas;

- DateTime.Now pa nam da čas in datum glede na našo trenutno lokacijo;

(primer1.jpg)

Izpis:

(izpis1.jpg)

Ustvarjanje objektov tipa DateTime

  • z new :

Splošne oblike:

- DateTime datumInCas2 = new DateTime (leto, mesec, dan)

- DateTime datumInCas = new DateTime (leto, mesec, dan, ura, minuta, sekunda)

- DateTime datumInCas = new DateTime (leto, mesec, dan, ura, minuta, sekunda, milisekunda)

Primer:

(primer2.jpg)

Če želimo izpisati podatek o milisekundah, moramo uporabiti ustrezen format (fff). Več o različnih formatih izveš na naslednjih prosojnicah.

Izpis:

(izpis2.jpg)

Ustvarjanje objektov tipa DateTime

  • s pomočjo statične metode Parse:

Splošna oblika :

DateTime datum = DateTime.Parse (niz);

Pri uporabi te metode, mora biti niz, ki je v oklepaju v veljavnem formatu.

Primeri ustreznih zapisov datuma v obliki niza :

- 13/12/2011

- 13/12/11

- 13-12-2011

- 2011-12-13

- Dec 13 2011

- Dec 13, 2011

Primeri ustreznih zapisov časa v obliki niza :

- 2:15 PM

- 2:15 AM

- 14:24

- 03:16:20

Parameter te metode je niz, ki vsebuje :

- le datumom - pri tem se ura nastavi na 0:00:00,

- le čas - pri tem se nastavi datum na današnji dan,

- ali pa datum in čas, ki sta lahko ločena z vejico ali pa ne.

Primer z metodo Parse

(primer3.jpg)

V prvih 6 spremenljivk smo shranili le podatke o datumu. V naslednjih 4 pa le podatke o času, vendar v izpisu vidimo, da se poleg časa izpiše tudi "današnji" datum. V zadnjem primeru pa smo podali tako datum kot čas.

(izpis3.jpg)

Ustvarjanje objektov tipa DateTime

  • S pomočjo metode Convert.ToDateTime:

Splošna oblika:

DateTime datum = Convert.ToDateTime(niz);

Ta metoda deluje podobno kot metoda Parse. Torej mora biti niz v oklepaju v veljavnem formatu.

Parameter te metode je lahko veljaven format z :

- datumom - pri tem se ura nastavi na 0:00:00,

- časom - pri tem se nastavi datum na današnji dan,

- ali pa z datumom in časom.

(primer4.jpg)

Izpis:

(izpis4.jpg)

Tabela formatov

Tabela standardih formatov za zapis objekta tipa DateTime:

(standardniFormati.jpg)

Format in ToString

Pri metodi Format in ToString, so parametri znaki oz. formati, ki so bili navedeni na prejšnjih prosojnicah.

V spremenljivki dan imamo shranjen nek datum in čas.

  • Pri metodi ToString je format le v "", npr. dan.ToString("ddd").
  • Medtem, ko pa pri metodi Format dodamo "{0: format, dan}", npr. String.Format("{0:dd/MM/yyyy}, dan").

Za formatiranje lahko uporabimo tudi metode

  • ToLongDateString(),
  • ToLongTimeString(),
  • ToShortDateString()in
  • ToShortTimeString().

Pri teh metodah ne navajamo formatnih nizov.

OPOMBA:

Pri običajnih nastavitvah operacijskega sistema - pri nas v Sloveniji - se za formatiranje datuma uporablja pika(.). Zato se pri formatiranju znaka "/" in "-" spremenita v znak ".".

Zgled uporabe formatov

Primer : Na kateri dan bo prišlo novo leto leta 2035?

Rešitev:

(leto.jpg)

Formatiranje

1. Primer formatiranja :

(StringDK.jpg)

Druga in tretja vrstica sta izpis kratke oblike časa in datuma.

Zadnji dve pa izpis dolge oblike datuma in časa.

(izpisDK.jpg)

Primer formatiranja

2. Primer formatiranja :

(String3.jpg)

Izpis:

(izpisString3.jpg)

Primer formatiranja

3. Primer formatiranja :

(String1.jpg)

Izpis:

(izpisString1.jpg)

Primer formatiranja

4. Primer formatiranja :

(String2.jpg)

Izpis:

(izpisString2.jpg)

Tabela lastnosti in metod

Tabela lastnosti in metod za delo z datumi in časom :

(lastnosti2.jpg)

Lastnosti Month, Day, Year, ... so le bralne in se jih ne da spreminjati na način :

DateTime danes = dateTime.Now;
danes.Day = 14;

Primeri uporabe lastnosti in metod

(Last.jpg)

Obstaja še lastnost Millisecond, ki vrne minisekunde.

Izpis:

(izpisLast.jpg)

Operacije

Operacije za delo z datumi in časom :

  • AddDays (k) – k datumu prišteje k dni in vrne nov datum;
  • AddMonth(k) – k datumu prišteje k mesecev in vrne nov datum;
  • AddYears(k) – k datumu prišteje k let in vrne nov datum;
  • AddHours(k) – k času prišteje k ur in vrne nov čas;
  • AddMinutes(k) – k času prišteje k minut in vrne nov čas;
  • AddSeconds(k) – k času prišteje k sekund in vrne nov čas;

Primer uporabe metod

(metode.jpg)

Izpis:

(izpisMetode.jpg)

Komentar rešitve:

Ko smo dodali 10 mescev, smo prešli iz leta 2011 v leto 2012.

Ko smo dodali 17 dni, smo iz meseca marca prešli v mesec april.

Prav tako pa smo v nov dan prešli takrat, ko smo dodali 5 ur.

Uporaba operatorjev

  • Pri delu s spremenljivkami tipa DateTime lahko uporabimo tudi operatorje +, -, ==, !=, <, <=, > in >=.
  • Ko odštevamo spremenljivki tipa DateTime dobimo novo spremenljivko, ki pa je tipa TimeSpan. Ta hrani pretečen čas v dnevih, urah, minutah, sekundah in milisekundah.
  • Struktura TimeSpan predstavlja časovni interval.
  • Za seštevanje in odštevanje tipov DateTime lahko uporabimo tudi metodi Add in Subtract.
  • Add(vrednost) – objektu tipa DateTime prištejemo navedeno vrednost, ki je tipa TimeSpan in dobimo novo vrednost tipa DateTime;
  • Subtract(vrednost) – objektu tipa DateTime odštejemo navedeno vrednost, ki je prav tako tipa DateTime in dobimo novo vrednost tipa Datetime;

Primer uporabe operatorjev

(operatorji.jpg)

Izpis:

(izpisOperatorji.jpg)

Zgled

Navodilo : Na katere dneve pridejo prazniki v letu 2012 ? Prazniki so zapisani na datoteki prazniki2012.txt.

Datoteka:

(datoteka.jpg)

Rešitev:

(zgled.jpg)

Viri

0%
0%