Bonjour,
je développe une application sur WPF et j'ai besoin de se connecter sur internet pour récupérer la date.
personne a t'il une solution ???
Version imprimable
Bonjour,
je développe une application sur WPF et j'ai besoin de se connecter sur internet pour récupérer la date.
personne a t'il une solution ???
Bonjour,
Une petite recherche sur date internet c#
donne : http://www.developpez.net/forums/d11...ternet-csharp/
un exemple depuis
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 public static DateTime GetNISTDate(bool convertToLocalTime) { Random ran = new Random(DateTime.Now.Millisecond); DateTime date = DateTime.Today; string serverResponse = string.Empty; // Represents the list of NIST servers string[] servers = new string[] { "64.90.182.55", "206.246.118.250", "207.200.81.113", "128.138.188.172", "64.113.32.5", "64.147.116.229", "64.125.78.85", "128.138.188.172" }; // Try each server in random order to avoid blocked requests due to too frequent request for (int i = 0; i < 5; i++) { try { // Open a StreamReader to a random time server StreamReader reader = new StreamReader(new System.Net.Sockets.TcpClient(servers[ran.Next(0, servers.Length)], 13).GetStream()); serverResponse = reader.ReadToEnd(); reader.Close(); // Check to see that the signiture is there if (serverResponse.Length > 47 && serverResponse.Substring(38, 9).Equals("UTC(NIST)")) { // Parse the date int jd = int.Parse(serverResponse.Substring(1, 5)); int yr = int.Parse(serverResponse.Substring(7, 2)); int mo = int.Parse(serverResponse.Substring(10, 2)); int dy = int.Parse(serverResponse.Substring(13, 2)); int hr = int.Parse(serverResponse.Substring(16, 2)); int mm = int.Parse(serverResponse.Substring(19, 2)); int sc = int.Parse(serverResponse.Substring(22, 2)); if (jd > 51544) yr += 2000; else yr += 1999; date = new DateTime(yr, mo, dy, hr, mm, sc); // Convert it to the current timezone if desired if (convertToLocalTime) date = date.ToLocalTime(); // Exit the loop break; } } catch (Exception ex) { /* Do Nothing...try the next server */ } } return date; }
merci, ça marche très bien mais ça demande environ 50 secondes pour donner la résultat. y a t'il une solution pour optimiser ce code???
a mon avis tu peux faire un backgroundworker pour que tu prépares la datetime.
sinon tu peux mettre a jour la datetime de ton PC avec se backgroundworker. par la suite DateTime.now te donnera une bonne valeur ,non?
tu veut dire que je dois exécuter ce code dans un thread a part??? en tous cas merci.
Oui. Relire c est interisant
pour récupèrer plus de serveur time tu peux aller a temps internet en cliquant sur l horloge (bureau/barre de tâches)
http://img15.hostingpics.net/pics/632277time.jpg