23-08-13, 01:10 AM
الصفحات : 1 2
23-08-13, 03:14 AM
اولا يجب ان تحدد سيرفر تعتمد عليه
يعني بالاحرى . حدد موقع يمكنك اخذ التاريخ منه
مثلا هذا الموقع
http://nist.time.gov/timezone.cgi?UTC/s/0
يعرض لك الوقت حسب توقيت الولايات المتحدة
بعده ان تحدد الموقع الذي تريد سحب الوقت منه
قم باستخدام الطلبات Web Requser
وسبق ان وضعت مقالة حول ذلك في قسم مقالات سي شارب
ثم بعد ان يتم ارسال الرد على طلبك
قم بتحليل الرد واخراج الوقت
ثم استعمال دالة API لتعديل وقت جهازك
يعني بالاحرى . حدد موقع يمكنك اخذ التاريخ منه
مثلا هذا الموقع
http://nist.time.gov/timezone.cgi?UTC/s/0
يعرض لك الوقت حسب توقيت الولايات المتحدة
بعده ان تحدد الموقع الذي تريد سحب الوقت منه
قم باستخدام الطلبات Web Requser
وسبق ان وضعت مقالة حول ذلك في قسم مقالات سي شارب
ثم بعد ان يتم ارسال الرد على طلبك
قم بتحليل الرد واخراج الوقت
ثم استعمال دالة API لتعديل وقت جهازك
PHP كود :
<StructLayout(LayoutKind.Sequential)> _
Public Structure SYSTEMTIME
Public wYear As Short
Public wMonth As Short
Public wDayOfWeek As Short
Public wDay As Short
Public wHour As Short
Public wMinute As Short
Public wSecond As Short
Public wMilliseconds As Short
End Structure
<DllImport("kernel32.dll", SetLastError := True)> _
Public Shared Function SetSystemTime(ByRef theDateTime As SYSTEMTIME) As Boolean
End Function
23-08-13, 04:17 AM
الشاكي لله كتب :اولا يجب ان تحدد سيرفر تعتمد عليه
يعني بالاحرى . حدد موقع يمكنك اخذ التاريخ منه
مثلا هذا الموقع
http://nist.time.gov/timezone.cgi?utc/s/0
يعرض لك الوقت حسب توقيت الولايات المتحدة
بعده ان تحدد الموقع الذي تريد سحب الوقت منه
قم باستخدام الطلبات web requser
وسبق ان وضعت مقالة حول ذلك في قسم مقالات سي شارب
ثم بعد ان يتم ارسال الرد على طلبك
قم بتحليل الرد واخراج الوقت
ثم استعمال دالة api لتعديل وقت جهازك
PHP كود :
<structlayout(layoutkind.sequential)> _
public structure systemtime
public wyear as short
public wmonth as short
public wdayofweek as short
public wday as short
public whour as short
public wminute as short
public wsecond as short
public wmilliseconds as short
end structure
<dllimport("kernel32.dll", setlasterror := true)> _
public shared function setsystemtime(byref thedatetime as systemtime) as boolean
end function
شكراً و أعجبني للمشاركة
شكراً شكر هذه المشاركة msdos
أعجبني معجب بهذه المشاركة msdos
23-08-13, 04:19 AM
أيضاُ
وجدت لك الدالة GetFastestNISTDate وكما يدل اسمها Fastest الأسرع
وجدت لك الدالة GetFastestNISTDate وكما يدل اسمها Fastest الأسرع
كود :
Public Function GetFastestNISTDate() As DateTime
Dim result = DateTime.MinValue
' Initialize the list of NIST time servers
' http://tf.nist.gov/tf-cgi/servers.cgi
Dim servers As String() = New String() {"nist1-ny.ustiming.org", "nist1-nj.ustiming.org", "nist1-pa.ustiming.org", "time-a.nist.gov", "time-b.nist.gov", "nist1.aol-va.symmetricom.com", _
"nist1.columbiacountyga.gov", "nist1-chi.ustiming.org", "nist.expertsmi.com", "nist.netservicesgroup.com"}
' Try 5 servers in random order to spread the load
Dim rnd As New Random()
For Each server As String In servers.OrderBy(Function(s) rnd.NextDouble()).Take(5)
Try
' Connect to the server (at port 13) and get the response
Dim serverResponse As String = String.Empty
Using reader = New IO.StreamReader(New System.Net.Sockets.TcpClient(server, 13).GetStream())
serverResponse = reader.ReadToEnd()
End Using
' If a response was received
If Not String.IsNullOrEmpty(serverResponse) Then
' Split the response string ("55596 11-02-14 13:54:11 00 0 0 478.1 UTC(NIST) *")
Dim tokens As String() = serverResponse.Split(" "c)
' Check the number of tokens
If tokens.Length >= 6 Then
' Check the health status
Dim health As String = tokens(5)
If health = "0" Then
' Get date and time parts from the server response
Dim dateParts As String() = tokens(1).Split("-"c)
Dim timeParts As String() = tokens(2).Split(":"c)
' Create a DateTime instance
Dim utcDateTime As New DateTime(Convert.ToInt32(dateParts(0)) + 2000, Convert.ToInt32(dateParts(1)), Convert.ToInt32(dateParts(2)), Convert.ToInt32(timeParts(0)), Convert.ToInt32(timeParts(1)), Convert.ToInt32(timeParts(2)))
' Response successfully received; exit the loop
Return result
End If
End If
End If
' Ignore exception and try the next server
Catch
End Try
Next
Return result
End Function23-08-13, 04:28 AM
طريقة استعمال الدالة GetFastestNISTDate
كود :
' بالتوقيت العالمي
TextBox1.Text = GetFastestNISTDate()
' لتحويل التوقيت العالمي لفارق التوقبت لمنطقتك
TextBox1.Text = GetFastestNISTDate().ToLocalTime()23-08-13, 04:34 AM
وهذه الدالة قمت باختصارها وتحسينها
كود :
Public Function GetInternetTime(ByVal host As String, Optional ByVal ToLocalTime As Boolean = False) As DateTime
Dim timeStr As String
Dim reader As New IO.StreamReader(New Net.Sockets.TcpClient(host, 13).GetStream)
Dim LastSysTime As DateTime
LastSysTime = DateTime.UtcNow()
timeStr = reader.ReadToEnd
reader.Close()
Dim year As Integer = CInt(timeStr.Substring(7, 2)) + 2000
Dim month As Integer = CInt(timeStr.Substring(10, 2))
Dim day As Integer = CInt(timeStr.Substring(13, 2))
Dim hour As Integer = CInt(timeStr.Substring(16, 2))
Dim minute As Integer = CInt(timeStr.Substring(19, 2))
Dim second As Integer = CInt(timeStr.Substring(22, 2))
If ToLocalTime Then
Return New DateTime(year, month, day, hour, minute, second).ToLocalTime
Else
Return New DateTime(year, month, day, hour, minute, second)
End If
End Function23-08-13, 04:34 AM
طريقة استعمال الدالة GetInternetTime
كود :
' بالتوقيت العالمي
TextBox1.Text = GetInternetTime("time.nist.gov")
' لتحويل التوقيت العالمي لفارق التوقبت لمنطقتك
TextBox1.Text = GetInternetTime("time.nist.gov", True)23-08-13, 04:38 AM
ملاحظة هامة:
قد تتأخر كثيراً الاستجابة في أوقات مختلفة وذلك من كل مواقع توقيت النت، حتى أنك تشعر في بعض الأحيان ان الدالة غير صحيحة وهي ليست كذلك (لا أدري ما السبب).
قد تتأخر كثيراً الاستجابة في أوقات مختلفة وذلك من كل مواقع توقيت النت، حتى أنك تشعر في بعض الأحيان ان الدالة غير صحيحة وهي ليست كذلك (لا أدري ما السبب).
23-08-13, 04:46 AM
هذه بعض مواقع التوقيت التي تعمل حتى الآن
كود :
TextBox1.Text = GetInternetTime("time-a.timefreq.bldrdoc.gov")'132.163.4.101
TextBox1.Text = GetInternetTime("time-c.timefreq.bldrdoc.gov") '132.163.4.103
TextBox1.Text = GetInternetTime("utcnist.colorado.edu") '128.138.140.44
TextBox1.Text = GetInternetTime("time-d.nist.gov") '129.6.15.27
TextBox1.Text = GetInternetTime("time.nist.gov") '129.6.15.2923-08-13, 05:21 AM
طريقة اخرى اخي العزيز ....
بدل من الاعتماد على موقع خاص
يمكننا تصميم خدمة ويب (web service)
وفي خدمة الويب نسوي دالة تقوم بحساب الوقت والتاريخ على سيرفر (قم بتركيبها على استضافة)
ثم من برنامجنا نقوم بسحب التاريخ والوقت بسهوووولة وبدون request و response وبدون تحليلات وخرابيط
فقط نقوم باستدعاء دالة جلب الوقت من الخدمة الي سويناها << بسيط صح !!
-
اصلا مافي ضمان على هالمواقع الذي ذكرها اخوي MSDOS
ماذا لو تم اغلاقها . هل سيتعطل برنامجك ؟؟؟ < اكيد
ماذا لو تم تغير سكربت الموقع ولم يكن باستطاعتك قراءة الوقت ؟؟ هل ستقوم بتنزيل ابديت لبرنامجك لحل هذه المشكلة !!
لماذا لانسهل الامور ونستخدم الطرق الصحيحة!
الطريق الصحيح والاحترافي هو باستعمال Web Service وهي التقنية التي بدت تسخدمها اغلب التطبيقات
انتظروني في مقالة كاملة تتحدث عنها قريبا
ضمن [سلسلة التعامل مع الويب] ومضاف لها التحكم الخارجي
بدل من الاعتماد على موقع خاص
يمكننا تصميم خدمة ويب (web service)
وفي خدمة الويب نسوي دالة تقوم بحساب الوقت والتاريخ على سيرفر (قم بتركيبها على استضافة)
ثم من برنامجنا نقوم بسحب التاريخ والوقت بسهوووولة وبدون request و response وبدون تحليلات وخرابيط
فقط نقوم باستدعاء دالة جلب الوقت من الخدمة الي سويناها << بسيط صح !!
-
اصلا مافي ضمان على هالمواقع الذي ذكرها اخوي MSDOS
ماذا لو تم اغلاقها . هل سيتعطل برنامجك ؟؟؟ < اكيد
ماذا لو تم تغير سكربت الموقع ولم يكن باستطاعتك قراءة الوقت ؟؟ هل ستقوم بتنزيل ابديت لبرنامجك لحل هذه المشكلة !!
لماذا لانسهل الامور ونستخدم الطرق الصحيحة!
الطريق الصحيح والاحترافي هو باستعمال Web Service وهي التقنية التي بدت تسخدمها اغلب التطبيقات
انتظروني في مقالة كاملة تتحدث عنها قريبا
ضمن [سلسلة التعامل مع الويب] ومضاف لها التحكم الخارجي
الصفحات : 1 2