PDA

View Full Version : چطور ساعت و تاريخ سرور رو بدست بيارم و اونو با كلاينت ها مقايسه كنم؟



swallow.pa
جمعه 19 دی 1393, 21:37 عصر
دوستان سلام
چطور ساعت و تاريخ سرور رو بدست بيارم و اونو با كلاينت ها مقايسه كنم؟
و ساعت و تاريخ سرور رو براي اين مي خوام كه درج اطلاعات تو سرور با تاريخ سرور يكي باشه و گرنه ساعتهاي كلاينتها قابل اعتماد نيست . روي سرور هم sql server نصبه
در حقيقت نرم افزارهايي رو كه روي كلاينت نصب شده بايد ساعت سرور رو داشته باشند

ممنون

gilsoft
شنبه 20 دی 1393, 07:10 صبح
دوستان سلام
چطور ساعت و تاريخ سرور رو بدست بيارم و اونو با كلاينت ها مقايسه كنم؟
و ساعت و تاريخ سرور رو براي اين مي خوام كه درج اطلاعات تو سرور با تاريخ سرور يكي باشه و گرنه ساعتهاي كلاينتها قابل اعتماد نيست . روي سرور هم sql server نصبه
در حقيقت نرم افزارهايي رو كه روي كلاينت نصب شده بايد ساعت سرور رو داشته باشند

ممنون

سلام دوست عزیز

من از کدهای زیر استفاده می‌کنم

Imports System.Runtime.InteropServices


Public Class Form1


#Region "GetNetRemoteTOD"
Private Declare Unicode Function NetRemoteTOD Lib "netapi32" (<MarshalAs(UnmanagedType.LPWStr)> ByVal ServerName As String, ByRef BufferPtr As IntPtr) As Integer
Private Declare Function NetApiBufferFree Lib "netapi32" (ByVal Buffer As IntPtr) As Integer
Structure TIME_OF_DAY_INFO
Dim tod_elapsedt As Integer
Dim tod_msecs As Integer
Dim tod_hours As Integer
Dim tod_mins As Integer
Dim tod_secs As Integer
Dim tod_hunds As Integer
Dim tod_timezone As Integer
Dim tod_tinterval As Integer
Dim tod_day As Integer
Dim tod_month As Integer
Dim tod_year As Integer
Dim tod_weekday As Integer
End Structure
Public Function GetNetRemoteTOD(ByVal strServerName As String) As Date
Try
Dim iRet As Integer
Dim ptodi As IntPtr
Dim todi As TIME_OF_DAY_INFO
Dim dDate As Date
strServerName = strServerName & vbNullChar
iRet = NetRemoteTOD(strServerName, ptodi)
If iRet = 0 Then
todi = CType(Marshal.PtrToStructure(ptodi, GetType(TIME_OF_DAY_INFO)), TIME_OF_DAY_INFO)
NetApiBufferFree(ptodi)
dDate = DateSerial(todi.tod_year, todi.tod_month, todi.tod_day) + " " + _
TimeSerial(todi.tod_hours, todi.tod_mins - todi.tod_timezone, todi.tod_secs)
GetNetRemoteTOD = dDate
Else
MsgBox("Error retrieving time")
End If
Catch
MsgBox("Error in GetNetRemoteTOD: " & Err.Description)
End Try
End Function
#End Region


Dim ServerName, ServerDate, ServerTime As String


Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
ServerName = "Server"
Dim dRemoteDate As Date
dRemoteDate = GetNetRemoteTOD(ServerName)
ServerDate = dRemoteDate.ToString("yyyy/MM/dd")
ServerTime = dRemoteDate.ToString("HH:mm:ss")


lblServer.Text = ServerName
lblDate.Text = ServerDate
lblTime.Text = ServerTime


End Sub
End Class


موفق باشید ....

djhooman
یک شنبه 21 دی 1393, 20:28 عصر
حالا با تابع شمسی توی دات نت چجوری این تاریخ و به شمسی نمایش بدیم ؟

gilsoft
یک شنبه 21 دی 1393, 22:10 عصر
حالا با تابع شمسی توی دات نت چجوری این تاریخ و به شمسی نمایش بدیم ؟

سلام دوست عزیز

کدی که در سطر 55 پست 2# نوشته شده رو حذف کن و کدهای زیر رو بجای اون درج کن:

Dim GPC As New System.Globalization.PersianCalendar
ServerDate = String.Format("{0}/{1:00}/{2:00}", {GPC.GetYear(dRemoteDate), GPC.GetMonth(dRemoteDate), GPC.GetDayOfMonth(dRemoteDate)})

موفق باشید ....

dabirsiaghi
دوشنبه 22 دی 1393, 09:36 صبح
میتونید از sqlserver استفاده کنید و تاریخ و زمان سرور رو از متد های sqlserver بگیرین

djhooman
دوشنبه 22 دی 1393, 23:49 عصر
میتونید از sqlserver استفاده کنید و تاریخ و زمان سرور رو از متد های sqlserver بگیرین
چجوری ؟؟؟؟؟
ضمنا من میخوام ساعت سرور و که نمایش میدم توی یک لیبل ، اون لیبل رو توی یک تایمر بندازم و ثانیه به ثانیه به ساعت اضافه بشه و دیگه هر ثانیه نیاد ساعت سرور و چک کنه چون بنظرم ترافیک سرور و تو کلاینت های با تعداد زیاد بشدت میبره بالا
درسته ؟؟؟؟
اگه مثالی از دریافت ساعت و اضافه کردن ثانیه به ساعت و بزنید کاربردی تره

gilsoft
سه شنبه 23 دی 1393, 06:39 صبح
چجوری ؟؟؟؟؟

سلام دوست عزیز

از کد زیر استفاده کنید:

SELECT
CONVERT(VARCHAR(10),GETDATE(),111) AS [Date],
CONVERT(VARCHAR(8),GETDATE(),108) AS [Time]
GO


موفق باشید

gilsoft
سه شنبه 23 دی 1393, 07:37 صبح
ضمنا من میخوام ساعت سرور و که نمایش میدم توی یک لیبل ، اون لیبل رو توی یک تایمر بندازم و ثانیه به ثانیه به ساعت اضافه بشه و دیگه هر ثانیه نیاد ساعت سرور و چک کنه چون بنظرم ترافیک سرور و تو کلاینت های با تعداد زیاد بشدت میبره بالا
درسته ؟؟؟؟
اگه مثالی از دریافت ساعت و اضافه کردن ثانیه به ساعت و بزنید کاربردی تره

سلام مجدد

بنظرم این روش .. روشِ درستی نیست ! ( خوب این چه کاری‌یه ؟! )

شما ساعت فعلی رو از SqlServer دریافت کن .. سپس ساعت سیستم رو با اون Setکن .....

موفق باشید .....

djhooman
سه شنبه 23 دی 1393, 19:16 عصر
چجوری تاریخ و ساعت سرور و روی سیستم کاربر ها ( کلاینت هام ) ست کنم ؟

gilsoft
سه شنبه 23 دی 1393, 20:24 عصر
چجوری تاریخ و ساعت سرور و روی سیستم کاربر ها ( کلاینت هام ) ست کنم ؟

سلام مجدد

در ادامه کدهای پست 4# .. کدهای زیر رو به پست 4# اضافه کن:

TimeOfDay = TimeSerial(dRemoteDate.Hour, dRemoteDate.Minute, dRemoteDate.Second) ' Set System Time
Today = DateSerial(dRemoteDate.Year, dRemoteDate.Month, dRemoteDate.Day) ' Set System Date


موفق باشید .....