Skutečný čas – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Skutečný čas – .NET – Fórum – Programujte.comSkutečný čas – .NET – Fórum – Programujte.com

 

Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
25. 4. 2009   #1
-
0
-

Ahoj, děl takovou menší aplikai, a chtěl bych aby se v ní střídal den a noc podle skutečnosti.. myslím, že pomocí datetime.now to nebude příliš vhodné.. přecijenom nemusí mít každý nastavený správný čas.. proto bych se chtel zeptat, jestli existuje způsob.. kterým bych třeba zjištoval daný čas daného pásma na internetu.

Nahlásit jako SPAM
IP: 212.80.64.–
25. 4. 2009   #2
-
0
-

Ahoj, můžeš se pokusit zjišťovat čas s pomocí NTP serveru:

http://www.google.com/search?hl=cs&client=opera&rls=cs&hs=WqI&q=NTP+c%23&btnG=Hledat&lr=
.

Nahlásit jako SPAM
IP: 84.21.124.–
Dušan Janošík | web: djanosik.cz, @djanosik
wetty0
Newbie
25. 4. 2009   #3
-
0
-

Ahoj.

Nebo lze použít následující kód:



public static System.DateTime GetNISTTime() {
// Promenna pro chybova hlaseni
string errors = null;

// Pole pro dotazovane servery
string[] servers = {"time-a.nist.gov", "time-b.nist.gov", "time.nist.gov", "utcnist.colorado.edu", "nist1.datum.com"};

// Cyklus, kde jsou dotazovany servery, dokud neni OK
for (int i = 0; i < servers.Length; i++) {
TcpClient tcpClient = null;
try {
// Vytvoreni TCP a nastaveni prodlevy pro prijem
tcpClient = new TcpClient();
tcpClient.ReceiveTimeout = 1000;

// Pokus o navazani spojeni na server
tcpClient.Connect(servers[i], 13);

NetworkStream networkStream = tcpClient.GetStream();
string result = null;
if (networkStream.CanWrite && networkStream.CanRead) {
// prijem vysledku a jeho konverze na ASCII
byte[] bytes = new byte[tcpClient.ReceiveBufferSize];
try {
networkStream.Read(bytes, 0, (int)tcpClient.ReceiveBufferSize);
result = Encoding.ASCII.GetString(bytes);
} catch (Exception ex) {
// ups, chybicka se vloudila
if (errors != null) errors += "\r\n";
errors += "Chyba serveru '" + servers[i] + ": " + ex.Message;
}
}

if (result != null) {
// VYsledek je ve tvaru JJJJJ YR-MO-DA HH:MM:SS TT L H msADV UTC(NIST) OTM
string[] token = result.Split(' ');
// kontrola poctu tokenu
if (token.Length >= 6) {
// Zjisteni a kontrola zdravi serveru 0.OK
string health = token[5];
if (health == "0") {
// Vse je OK, tak se konecne dostavame k parsovani datumu
string[] dates = token[1].Split('-');
string[] times = token[2].Split(':');

// zalozeni a naplneni instance DateTime
System.DateTime utcDate =
new System.DateTime(Int32.Parse(dates[0]) + 2000,
Int32.Parse(dates[1]), Int32.Parse(dates[2]),
Int32.Parse(times[0]), Int32.Parse(times[1]),
Int32.Parse(times[2]));

// Prevod na aktualni casove pasmo
return TimeZone.CurrentTimeZone.ToLocalTime(utcDate);
} else {
// ups, chybycka
if (errors != null) errors += "\r\n";
errors += "Chyba serveru '" + servers[i] + ": Zdravi je : " + health;
}
} else {
// ups, chybycka
if (errors != null) errors += "\r\n";
errors += "Chyba serveru '" + servers[i] + ": chybny pocet tokenu";
}
}
} catch (Exception ex) {
// ups, chybycka
if (errors != null) errors += "\r\n";
errors += "Chyba serveru '" + servers[i] + ": " + ex.Message;
} finally {
try {
// a koncime :-)
tcpClient.Close();
} catch { }
}
}

// No a pokud jsme dosli az sem, zrejme jsme nic nedostali a tak vyhodime vyjimku
throw new Exception(errors);
}



Nahlásit jako SPAM
IP: 213.195.202.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

čas v c++ — založil programator453

Čas — založil Kenvelo

Čas — založil šampík

Ubehnuty cas — založil dalaman

Čas a TK inter — založil Arthas

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý