Browse Source

系统登录时更新系统时间,时间取值:数据库系统时间

Hcsy 6 years ago
parent
commit
3d93818517
2 changed files with 80 additions and 1 deletions
  1. 14 1
      UAS-MES/Login.cs
  2. 66 0
      UAS-MES/PublicMethod/SYSDATE.cs

+ 14 - 1
UAS-MES/Login.cs

@@ -11,6 +11,7 @@ using System.Threading;
 using System.Drawing.Drawing2D;
 using System.Drawing;
 using UAS_MES.Properties;
+using System.Globalization;
 
 namespace UAS_MES
 {
@@ -60,7 +61,7 @@ namespace UAS_MES
                 UserName.Select();
             BaseUtil.SetFormCenter(this);
         }
-
+ 
         private void LoadMaster()
         {
             try
@@ -73,6 +74,18 @@ namespace UAS_MES
                 DB.ValueMember = "db_user";
                 DB.Text = BaseUtil.GetCacheData("LastLoginSob").ToString();
                 LoginButton.Enabled = true;
+
+                string nowtime = dh.getFieldDataByCondition("dual", "to_char(sysdate,'yyyy-MM-dd HH24:mm:ss')", "1=1").ToString();
+                //取得数据库时间
+                DateTime dt;
+                DateTimeFormatInfo dtFormat = new DateTimeFormatInfo();
+                dtFormat.ShortDatePattern = "yyyy-MM-dd hh:mm:ss";
+                dt = Convert.ToDateTime(nowtime, dtFormat);
+                //转换System.DateTime到SYSTEMTIME
+                SYSDATE.SYSTEMTIME st = new SYSDATE.SYSTEMTIME();
+                st.FromDateTime(dt);
+                //调用Win32 API设置系统时间
+                SYSDATE.Win32API.SetLocalTime(ref st);
             }
             catch (Exception ex)
             {

+ 66 - 0
UAS-MES/PublicMethod/SYSDATE.cs

@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace UAS_MES.PublicMethod
+{
+    class SYSDATE
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public struct SYSTEMTIME
+        {
+            public ushort wYear;
+            public ushort wMonth;
+            public ushort wDayOfWeek;
+            public ushort wDay;
+            public ushort wHour;
+            public ushort wMinute;
+            public ushort wSecond;
+            public ushort wMilliseconds;
+
+            /// <summary>
+            /// 从System.DateTime转换。
+            /// </summary>
+            /// <param name="time">System.DateTime类型的时间。</param>
+            public void FromDateTime(DateTime time)
+            {
+                wYear = (ushort)time.Year;
+                wMonth = (ushort)time.Month;
+                wDayOfWeek = (ushort)time.DayOfWeek;
+                wDay = (ushort)time.Day;
+                wHour = (ushort)time.Hour;
+                wMinute = (ushort)time.Minute;
+                wSecond = (ushort)time.Second;
+                wMilliseconds = (ushort)time.Millisecond;
+            }
+            /// <summary>
+            /// 转换为System.DateTime类型。
+            /// </summary>
+            /// <returns></returns>
+            public DateTime ToDateTime()
+            {
+                return new DateTime(wYear, wMonth, wDay, wHour, wMinute, wSecond, wMilliseconds);
+            }
+            /// <summary>
+            /// 静态方法。转换为System.DateTime类型。
+            /// </summary>
+            /// <param name="time">SYSTEMTIME类型的时间。</param>
+            /// <returns></returns>
+            public static DateTime ToDateTime(SYSTEMTIME time)
+            {
+                return time.ToDateTime();
+            }
+        }
+        public class Win32API
+        {
+            [DllImport("Kernel32.dll")]
+            public static extern bool SetLocalTime(ref SYSTEMTIME Time);
+            [DllImport("Kernel32.dll")]
+            public static extern void GetLocalTime(ref SYSTEMTIME Time);
+        }
+    }
+}