تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
اريد الحصول على تاريخ اليوم عن طريق الانترنت وليس عن طريق الجهاز
#1
السلام عليكم
اريد الحصول على الوقت والتاريخ عن طريق الانترنت لضبط وقت وتاريخ الكمبيوتر
كيف يتم ذلك وجزاكم الله خيرا
الرد }}}
تم الشكر بواسطة:
#2
اولا يجب ان تحدد سيرفر تعتمد عليه

يعني بالاحرى . حدد موقع يمكنك اخذ التاريخ منه

مثلا هذا الموقع

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 
الرد }}}
تم الشكر بواسطة:
#3
الشاكي لله كتب :اولا يجب ان تحدد سيرفر تعتمد عليه

يعني بالاحرى . حدد موقع يمكنك اخذ التاريخ منه

مثلا هذا الموقع

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
الرد }}}
تم الشكر بواسطة:
#4
أيضاُ

وجدت لك الدالة 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 Function
الرد }}}
تم الشكر بواسطة:
#5
طريقة استعمال الدالة GetFastestNISTDate
كود :
' بالتوقيت العالمي
TextBox1.Text = GetFastestNISTDate()

' لتحويل التوقيت العالمي لفارق التوقبت لمنطقتك
TextBox1.Text = GetFastestNISTDate().ToLocalTime()
الرد }}}
تم الشكر بواسطة:
#6
وهذه الدالة قمت باختصارها وتحسينها

كود :
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 Function
الرد }}}
تم الشكر بواسطة: السندبااد
#7
طريقة استعمال الدالة GetInternetTime

كود :
' بالتوقيت العالمي
TextBox1.Text = GetInternetTime("time.nist.gov")

' لتحويل التوقيت العالمي لفارق التوقبت لمنطقتك
TextBox1.Text = GetInternetTime("time.nist.gov", True)
الرد }}}
تم الشكر بواسطة: السندبااد
#8
ملاحظة هامة:

قد تتأخر كثيراً الاستجابة في أوقات مختلفة وذلك من كل مواقع توقيت النت، حتى أنك تشعر في بعض الأحيان ان الدالة غير صحيحة وهي ليست كذلك (لا أدري ما السبب).
الرد }}}
تم الشكر بواسطة: السندبااد
#9
هذه بعض مواقع التوقيت التي تعمل حتى الآن
كود :
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.29
الرد }}}
تم الشكر بواسطة: السندبااد
#10
طريقة اخرى اخي العزيز ....


بدل من الاعتماد على موقع خاص

يمكننا تصميم خدمة ويب (web service)

وفي خدمة الويب نسوي دالة تقوم بحساب الوقت والتاريخ على سيرفر (قم بتركيبها على استضافة)

ثم من برنامجنا نقوم بسحب التاريخ والوقت بسهوووولة وبدون request و response وبدون تحليلات وخرابيط
فقط نقوم باستدعاء دالة جلب الوقت من الخدمة الي سويناها << بسيط صح !!


-
اصلا مافي ضمان على هالمواقع الذي ذكرها اخوي MSDOS

ماذا لو تم اغلاقها . هل سيتعطل برنامجك ؟؟؟ < اكيد
ماذا لو تم تغير سكربت الموقع ولم يكن باستطاعتك قراءة الوقت ؟؟ هل ستقوم بتنزيل ابديت لبرنامجك لحل هذه المشكلة !!
لماذا لانسهل الامور ونستخدم الطرق الصحيحة!


الطريق الصحيح والاحترافي هو باستعمال Web Service وهي التقنية التي بدت تسخدمها اغلب التطبيقات

انتظروني في مقالة كاملة تتحدث عنها قريبا

ضمن [سلسلة التعامل مع الويب] ومضاف لها التحكم الخارجي

الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  محتاج تشفير فيديو وتشغلية عن طريق البرنامج فقط new_programer 1 112 22-02-24, 12:09 PM
آخر رد: AHMED213
  [VB.NET] معرفة بيانات الجهاز محمد بوقزاحة 1 309 21-02-24, 11:44 PM
آخر رد: AHMED213
  التحقق من خلال محتوى خلية عن طريق textbox صالح عبدالله 2 222 24-01-24, 12:54 PM
آخر رد: صالح عبدالله
  [VB.NET] معرفة بيانات الجهاز محمد بوقزاحة 7 676 12-01-24, 07:31 PM
آخر رد: Kamil
  اريد طباعة الباركود المحدد فقط مع الكمية new_programer 5 430 09-01-24, 08:40 PM
آخر رد: new_programer
  اريد مساعدة في العملية الحسابية melad2002 3 406 29-12-23, 09:10 PM
آخر رد: melad2002
  [كود] اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF issamsaidd 10 5,829 25-12-23, 06:30 PM
آخر رد: الحزين اليماني
  [VB.NET] اريد تعديل في الكود عند طباعة DGV abu_hisham7 1 431 03-12-23, 02:40 AM
آخر رد: abu_hisham7
  غير مسجل على الجهاز المحلي 'Microsoft.ace.oledb.12.0' ان الموفر Adel27213 2 380 30-11-23, 09:19 PM
آخر رد: Adel27213
  [سؤال] اريد تغيير اسم حقل ضمن جدول بقاعدة بيانات اكسس mh66 1 358 08-11-23, 08:16 AM
آخر رد: justforit

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم