Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



VB6 - datum a čas

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: VB6 - datum a čas

Autor: toonnyy

9:50:26 12.04.2011

Luboši díky, bohužel odkazy nefunkční.Můžete tedy poslat zdroják na meila?Díky,toonnyy

Citovat příspěvek

 

Re: VB6 - datum a čas

Autor: luboš

8:28:14 12.04.2011

Ach jo. Tak do třetice a když ne tak to pošlu na váš email.

Citovat příspěvek

 

Re: VB6 - datum a čas

Autor: luboš

0:22:32 12.04.2011

Nevím proč se ten soubor nenahrál. Tak ještě jeden pokus.

Citovat příspěvek

 

Re: VB6 - datum a čas

Autor: luboš

0:13:18 12.04.2011

Přiložený kód by měl posloužit jen pro inspiraci. Program neřeší různé chybové stavy.

Vytvořte ve VB6 nový projekt, na formulář vložte Timer a formulář protáhněte co nejvíc na výšku (veškeré výpisy jsou pro zjednodušení tisknuty přímo na formulář).
To co by vás mohlo asi nejvíc překvapit, je způsob odečítání a porovnání časů, který v projektu používám. Datum se převede na číslo (datový typ Double) pomocí funkce CDbl. Celá část čísla zobrazuje počet dnů od určitého data a desetiná část čísla zobrazuje poměrnou část dne (např. 12 hodin = 0.5). Potom se provedou potřebné matematické operace a výsledek se převede zpět na datum pomocí funkce CDate. Stejný způsob používá interně i VB6 u datových funkcí jeko je např. DateDiff a pod..

Citovat příspěvek

 

Re: VB6 - datum a čas

Autor: toonnyy

17:48:45 11.04.2011

Moc díky.Já ale s VB teprve začínam, dřív sem ho používal výlučně na obsluhu databází,takže o polích nevim vůbec nic.Šlo by prosím napsat malej příklad,třeba s dvěma daty a časy? Jinak data by se eventuálně mohla mazat - po dokončení události dané datum a čas odstranit.Moc díky...

Citovat příspěvek

 

Re: VB6 - datum a čas

Autor: Luboš

12:39:13 11.04.2011

Já osobně bych to řešil tak, že bych všechny data uložil do pole, pole bych setřídil podle datumů a při ukončení aplikace bych setříděné pole uložil. Pokud by se některé datum v poli mělo změnit, přidat nebo smazat, tak bych po každé takovéto změně provedl opětovné setřídění dat.
Pokud budete mít data seřazená podle datumů, tak jen vyhledáte nejbližší datum a budete sledovat kdy nastane událost. Po ukončení události vezmete následuájící datum v poli a budete opět sledovat kdy nastane událost u tohoto datumu ... atd. atd

Citovat příspěvek

 

Re: VB6 - datum a čas

Autor: toonnyy

9:17:13 11.04.2011

Tedy ještě upřesním, pokud někdo bude ochotný poradit. mCelkem 19 datumů, ve formátu "1.1.2011 9:00", "5.2.2011 10:30" atd. A já potřebuji třeba v lábelu zobrazit název té události, která právě začala, pokud uplyne více jak 120min., pak zobrazit název další události, která následuje jako další, tedy ze všech událostí je datumově nejblíž k aktuálnímu datu.Tedy další událost bude třba za 7200min (5 dní).Další pak za 11520min (8dní), atd. Musel bych u každé této události spočítat, kolik min zbývá, to ale bude platit pouze k dnešnímu datu, zítra už bude hodnota jiná. Ale i tak to asi jde. Pro každou událost požít DateDiff v minutách, hodnota se bude samozřejmě měnit z aktuálním datem a časem. Budu tedy mít 19 různých hodnot v minutách při každém spuštění programu. No a z těchto hodnot pak potřebuji vybrat tu, která je počtem zbývajících minut nejblíže aktuálnímu datu. Tedy jednoduše - z 19 číselných údajů vybrat vždy ten, který je nejmenší (nejblíže aktuálnímu datu). Zřejmě na to existuje něco jako Val(min) Val(max), ale vůbec netuším jak na to. Budu moc rád, za každou radu.

Citovat příspěvek

 

Re: VB6 - datum a čas

Autor: toonnyy

8:58:41 11.04.2011

Moc dík za odpověď, tuto fci znám a používám v programu na odpočet, kolik dní a hodin zbývá do začátku události. Já ale událostí mám celkem 19. A tady potřebuji zjednodušeně tot: pokud "x" = "d1" a pokud "x" < 120 Then .....tedy poku x bude stejné jako d1, popřípadě dokud neuběhne 120min, tak bude trvat nějaká událost, třeba Label1 = Událost trvá.Pokud však uběhne více jak 120 min,Label1 = Ukončeno.A tady si nevím rady:
Private Sub Command1_Click()
Dim x As Long
Dim d1 As Date
d1 = Text1.Text
x = DateDiff("n", Now, d1)
If x < -1 And x > -120 Then
MsgBox "Probíhá"
End If
End Sub
Tohle funguje, jenže tohle potřebuji u 19 datumů, které jdou po sobě, tedy duben, květen atd., a to tak, až přestane platit jeden datum, tedy uplyne více jak těch 120min, tak třeba Label zobrazí jméno další události, která je NEJBLÍŽE aktuálnímu datu, a to do doby, než opět uplyne 120min.Tedy události starší než 120min od aktuálního data přestanou platit.
No asi budu muset tuto rozhodující proceduru napsat pro každý datum zvlášť. Ještě jednou moc díky za radu. toonnyy

Citovat příspěvek

 

Re: VB6 - datum a čas

Autor: luboš

1:47:49 11.04.2011

Funkce DateDiff je přesně to co potřebujete.

Dim x As Long
Dim d1 As Date
d1 = "25.4.2011 10:00"
x = DateDiff("n", Now, d1)

V x bude rozdíl datumů v minutách (pokud je d1 menší než Now, bude hodnota záporná)

Citovat příspěvek

 

VB6 - datum a čas

Autor: toonnyy

0:43:02 11.04.2011

Ahoj
Potřeboval bych prosím porovnat ve VB6 několik datumů a časů zároveň.Tedy určit,který z nich je nejblíže aktuálnímu datu, a popřípadě i hodině.Řekněme, že Label1 bude mít hodnotu Now, tedy aktuální datum a čas, přez Timer(1s).Pak budou další Labely, kde budou hodnoty třeba "28.4.2011 10:00", "2.5.2011 12:00" atd.Tady pak potřebuji vybrat hodnotu, která bude nejblíže hodnotě Now(Label1).No a aby toho nebylo málo,tak pokud možno, i rozlišit, o kolik je daná hodnota větší či menší.Tedy, zda údaj "25.4.2011 10:00" je třeba větší o 120minut, než údaj Now.Umím porovnat dvě data, zda je některé větší, menší, rovno.Ale zjistit rozdíl v minutách, popřípadě které datum je nejblíže údaji Now, to se mi nedaří.Jen připomenu, že údaje jsou v Labelu, popřípadě TextBoxu, nikoli třeba v Listu, kde by třeba šlo použít Select Case.
Takže - Label1 = "25.4.2011 10:00"
Label2 = Now
Pokud Label1 dosáhne hodnoty Now, změní se třeba Label3 = "Probíhá", ale pokud Label1 bude větší od hodnoty Now o třeba 120min, pak Label3 = "Dokončeno", a začne se porovnávat další údaj, z dalšího Labelu, kde bude "5.6.2011 12:30", pak bude Label3 = "Další událost nastane" + údaj Labelu s datumem "5.6.2011 12:30".
Asi to píšu složitě, tak doufám, že to je k pochopení, a předem moc díky za pomoc.

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: