From 4dce704aaf8587cf3f91cf88f2208315a03c4cbb Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期三, 08 四月 2020 13:54:58 +0800
Subject: [PATCH] 先上传一个版本

---
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs |  204 +++++++++++++++++++++++++++++++++-----------------
 1 files changed, 135 insertions(+), 69 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs
index 81832f0..2289e47 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs
@@ -27,7 +27,7 @@
                             var dataReport = tempDevice.DeviceStatusReport.AttriBute[0];
                             if (tempDevice.DeviceStatusReport.CluterID == 10 && dataReport.AttributeId == 0)
                             {
-                                CurentDoorLockTime = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetLocalTime(dataReport.AttriButeData);
+                                CurentDoorLockTime = DoorLockCommonInfo.GetLocalTime(dataReport.AttriButeData);
                                 Application.RunOnMainThread(() =>
                                 {
                                     waitGetDoorLockTime = DateTime.MaxValue;
@@ -60,6 +60,8 @@
             this.doorLock = doorLock;
             setTimeType = timeType;
             BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor;
+            //璇婚棬閿佹椂鍖烘椂闂�
+            DoorLockCommonInfo.GetDoorLockZoneTime();
             ZigBee.Device.ZbGateway.StatusList.Add(this);
         }
         #endregion
@@ -180,7 +182,7 @@
             };
             this.midFrameLayout.AddChidren(midTopFrameLayout);
 
-            var dtNow = DateTime.Now;
+            var dtNow = DoorLockCommonInfo.DoorlockZoneTime;// DateTime.Now;
             for (int i = 0; i < 2; i++)
             {
                 #region MidTopFrameLayout UI
@@ -370,6 +372,7 @@
         /// <summary>
         /// 娣诲姞銆愰棬閿佹椂闂淬�戣锛堥棬閿佷笓鐢級
         /// </summary>
+        /// <param name="zoneFrameLayout"></param>
         private void AddDoorLocksTimeRow(FrameLayout zoneFrameLayout)
         {
             //闂ㄩ攣鏃堕棿
@@ -405,11 +408,17 @@
                 TextColor = Shared.Common.ZigbeeColor.Current.XMGray4,
                 TextSize = 14,
             };
+
             rowLayout.AddChidren(textZone);
             textZone.Text = zoneData();
             textZone.MouseDownEventHandler += (sender, e) =>
             {
-                //GetSpecificZoneNowDate();
+                //1銆佸叆缃戝悗鍏堣幏鍙栭棬閿佸湪缃戝叧涓殑鏃跺尯鏃堕棿
+                var curDateTime = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockZoneTime();
+                //2銆佸皢鏃堕棿璁剧疆鍒扮綉鍏充腑
+                var dateTime = new DateTime(curDateTime.Year, curDateTime.Month, curDateTime.Day, curDateTime.Hour, curDateTime.Minute, curDateTime.Second);
+                var setTimestamp = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(dateTime);
+                doorLock.RectifyDoorLockTimeAsync(int.Parse(setTimestamp));
             };
 
             var btnLine = new FrameLayout()
@@ -430,24 +439,86 @@
         private string zoneData()
         {
             string zoneText = "";
-            var gwZone = caculateTimeZone(Common.Config.Instance.Home.Longitude);
+            int num = 0;
+            var gwZone = DoorLockCommonInfo.CaculateTimeZone(Common.Config.Instance.Home.Longitude);
+            if (int.Parse(gwZone) != 0)
+            {
+                num = int.Parse(gwZone.Substring(1));
+            }
             if (gwZone.Contains('+'))
             {
-                zoneText = Language.StringByID(R.MyInternationalizationString.East);
+                zoneText = EastZoneList(num - 1);
+            }
+            else if (gwZone.Contains('-'))
+            {
+                zoneText = WestZoneList(num - 1);
             }
             else
             {
-                zoneText = Language.StringByID(R.MyInternationalizationString.West);
+                zoneText = Language.StringByID(R.MyInternationalizationString.CurZoneText0);
             }
-            var num = ToNum(int.Parse(gwZone));
-            return zoneText += num + Language.StringByID(R.MyInternationalizationString.CurZoneText);
+            return zoneText;
+        }
+
+        /// <summary>
+        /// 杞崲涓滃尯
+        /// </summary>
+        /// <param name="x"></param>
+        /// <returns></returns>
+        private string EastZoneList(int x)
+        {
+            var numString = new string[]
+            {
+                Language.StringByID(R.MyInternationalizationString.CurZoneText1),
+                Language.StringByID(R.MyInternationalizationString.CurZoneText2),
+                Language.StringByID(R.MyInternationalizationString.CurZoneText3),
+                Language.StringByID(R.MyInternationalizationString.CurZoneText4),
+                Language.StringByID(R.MyInternationalizationString.CurZoneText5),
+                Language.StringByID(R.MyInternationalizationString.CurZoneText6),
+                Language.StringByID(R.MyInternationalizationString.CurZoneText7),
+                Language.StringByID(R.MyInternationalizationString.CurZoneText8),
+                Language.StringByID(R.MyInternationalizationString.CurZoneText9),
+                Language.StringByID(R.MyInternationalizationString.CurZoneText10),
+                Language.StringByID(R.MyInternationalizationString.CurZoneText11),
+                Language.StringByID(R.MyInternationalizationString.CurZoneText12)
+            };
+            var strChnNamesList = new List<string>(numString);
+            return strChnNamesList[x];
+        }
+
+        /// <summary>
+        /// 杞崲瑗垮尯
+        /// </summary>
+        /// <param name="x"></param>
+        /// <returns></returns>
+        private string WestZoneList(int x)
+        {
+            var numString = new string[]
+            {
+                Language.StringByID(R.MyInternationalizationString.WestZoneText1),
+                Language.StringByID(R.MyInternationalizationString.WestZoneText2),
+                Language.StringByID(R.MyInternationalizationString.WestZoneText3),
+                Language.StringByID(R.MyInternationalizationString.WestZoneText4),
+                Language.StringByID(R.MyInternationalizationString.WestZoneText5),
+                Language.StringByID(R.MyInternationalizationString.WestZoneText6),
+                Language.StringByID(R.MyInternationalizationString.WestZoneText7),
+                Language.StringByID(R.MyInternationalizationString.WestZoneText8),
+                Language.StringByID(R.MyInternationalizationString.WestZoneText9),
+                Language.StringByID(R.MyInternationalizationString.WestZoneText10),
+                Language.StringByID(R.MyInternationalizationString.WestZoneText11),
+                Language.StringByID(R.MyInternationalizationString.WestZoneText12)
+            };
+            var strChnNamesList = new List<string>(numString);
+            return strChnNamesList[x];
         }
 
         /// <summary>
         /// 鑾峰彇鏃跺尯
         /// <para>currentLon:"+"涓轰笢鍖猴紝鈥�-鈥濅负瑗垮尯</para>
         /// </summary>
-        public static String caculateTimeZone(double currentLon)
+        /// <param name="currentLon"></param>
+        /// <returns></returns>
+        public static String CaculateTimeZone(double currentLon)
         {
             int timeZone;
             int shangValue = (int)(currentLon / 15);
@@ -464,58 +535,17 @@
         }
 
         /// <summary>
-        /// 杞崲鏁板瓧
+        /// 鑾峰彇鎵�鍦ㄦ椂鍖虹殑鏃堕棿 
         /// </summary>
-        private string ToNum(int x)
+        /// <param name="unix"></param>
+        /// <returns></returns>
+        public static int GetLocalTime(int unix)
         {
-            var numString = new string[] { "闆�", "涓�", "浜�", "涓�", "鍥�", "浜�", "鍏�", "涓�", "鍏�", "涔�", "鍗�", "鍗佷竴", "鍗佷簩" };
-            var strChnNamesList = new List<string>(numString);
-            return strChnNamesList[x];
+            var gwZone = CaculateTimeZone(Common.Config.Instance.Home.Longitude);
+            var data = unix + 8 * 3600;
+
+            return data;
         }
-
-        //濡備綍鏄剧ず鏃跺尯鎵�鍦ㄧ殑鏃堕棿
-        public DateTime GetSpecificZoneNowDate(string zoneName = "")
-        {
-            DateTime curZoneDateTime;
-
-            //聽鍒椾妇鎵�鏈夋敮鎸佺殑鏃跺尯鍒楄〃
-            System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo> lst = TimeZoneInfo.GetSystemTimeZones();
-            foreach (TimeZoneInfo tzi in lst)
-            {
-                var aa = tzi;
-                var aa1 = tzi.Id;
-            }
-            GetSpecificZoneNowDate1();
-            zoneName = "Central聽America聽Standard聽Time";//缇庡浗
-            //灏嗘湰鍦版椂闂磋浆鎹负缇庡浗鏍囧噯涓儴鏃堕棿
-            DateTime dt = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now, TimeZoneInfo.Local);
-            curZoneDateTime = TimeZoneInfo.ConvertTimeFromUtc(dt, TimeZoneInfo.FindSystemTimeZoneById(zoneName));
-
-            zoneName = "China Standard Time";//涓浗
-            //棣栧厛灏嗘湇鍔″櫒鐨勬椂闂磋浆鍖栦负utc鏃堕棿锛� 
-            var utcdate = DateTime.Now.ToUniversalTime();
-            //鐒跺悗杞崲鎴愭寚瀹氭椂鍖虹殑鏃ユ湡
-            TimeZoneInfo beiJingZone = TimeZoneInfo.FindSystemTimeZoneById(zoneName);
-            curZoneDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcdate, beiJingZone);
-
-            return curZoneDateTime;
-        }
-
-        public void GetSpecificZoneNowDate1()
-        {
-            // Get time in local time zone 
-            DateTime thisTime = DateTime.Now;
-            Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(thisTime) ?
-                              TimeZoneInfo.Local.DaylightName : TimeZoneInfo.Local.StandardName, thisTime);
-            Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local));
-            // Get Tokyo Standard Time zone
-            TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
-            DateTime tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst);
-            Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(tstTime) ?
-                              tst.DaylightName : tst.StandardName, tstTime);
-            Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst));
-        }
-
 
         #endregion
 
@@ -559,7 +589,7 @@
                 try
                 {
                     var curDateTime = new DateTime(curYear, curMonth, curDay, curHour, curMin, curSec);
-                    var setTimestamp = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(curDateTime);
+                    var setTimestamp = DoorLockCommonInfo.GetUnixTimeStamp(curDateTime);
                     Application.RunOnMainThread(() =>
                     {
                         CommonPage.Loading.Start("");
@@ -701,17 +731,19 @@
                             string nowValue2 = dtNow.Year.ToString() + curMonth.ToString().PadLeft(2, '0') + curDay.ToString().PadLeft(2, '0');
                             if (nowValue1.CompareTo(nowValue2) == 1)
                             {
-                                this.ShowMassage(ShowMsgType.Error, "鐢熸晥鏃ユ湡涓嶈兘澶т簬褰撳墠鏃ユ湡");
+                                var mess = Language.StringByID(R.MyInternationalizationString.ValidTimeNoLessThanCurrentTime);
+                                this.ShowMassage(ShowMsgType.Error, mess);
                                 return;
                             }
                             //妫�鏌ユ椂闂�
-                            var flage = this.CheckValidTime(dtNow.Year, curMonth, curDay, 
+                            var flage = this.CheckValidTime(dtNow.Year, curMonth, curDay,
                                 DoorLockCommonInfo.ValidDateHour, DoorLockCommonInfo.ValidDateMinute, DoorLockCommonInfo.ValidDateSecond,
                                 DoorLockCommonInfo.InValidDateYear, DoorLockCommonInfo.InValidDateMonth, DoorLockCommonInfo.InValidDateDay,
                                 DoorLockCommonInfo.InValidDateHour, DoorLockCommonInfo.InValidDateMinute, DoorLockCommonInfo.InValidDateSecond);
                             if (flage == false)
                             {
-                                this.ShowMassage(ShowMsgType.Error, "鐢熸晥鏃堕棿涓嶈兘灏忎簬澶辨晥鏃堕棿");
+                                var mess = Language.StringByID(R.MyInternationalizationString.ValidTimeNoMoreThanInValidTime);
+                                this.ShowMassage(ShowMsgType.Error, mess);
                                 return;
                             }
                             DoorLockCommonInfo.ValidDateYear = dtNow.Year;
@@ -721,13 +753,14 @@
                         else
                         {
                             //妫�鏌ユ椂闂�
-                            var flage = this.CheckValidTime(DoorLockCommonInfo.ValidDateYear, DoorLockCommonInfo.ValidDateMonth, DoorLockCommonInfo.ValidDateDay, 
+                            var flage = this.CheckValidTime(DoorLockCommonInfo.ValidDateYear, DoorLockCommonInfo.ValidDateMonth, DoorLockCommonInfo.ValidDateDay,
                                 DoorLockCommonInfo.ValidDateHour, DoorLockCommonInfo.ValidDateMinute, DoorLockCommonInfo.ValidDateSecond,
                                 dtNow.Year, curMonth, curDay,
                                 DoorLockCommonInfo.InValidDateHour, DoorLockCommonInfo.InValidDateMinute, DoorLockCommonInfo.InValidDateSecond);
                             if (flage == false)
                             {
-                                this.ShowMassage(ShowMsgType.Error, "澶辨晥鏃堕棿涓嶈兘澶т簬鐢熸晥鏃堕棿");
+                                var mess = Language.StringByID(R.MyInternationalizationString.InvalidTimeNoLessThanValidTime);
+                                this.ShowMassage(ShowMsgType.Error, mess);
                                 return;
                             }
 
@@ -806,7 +839,39 @@
                     }
                     else
                     {
-                        curYear = y + 2009;
+                        switch (y)
+                        {
+                            case 0:
+                                curYear = dtNow.Year - 9;
+                                break;
+                            case 1:
+                                curYear = dtNow.Year - 8;
+                                break;
+                            case 2:
+                                curYear = dtNow.Year - 7;
+                                break;
+                            case 3:
+                                curYear = dtNow.Year - 6;
+                                break;
+                            case 4:
+                                curYear = dtNow.Year - 5;
+                                break;
+                            case 5:
+                                curYear = dtNow.Year - 4;
+                                break;
+                            case 6:
+                                curYear = dtNow.Year - 3;
+                                break;
+                            case 7:
+                                curYear = dtNow.Year - 2;
+                                break;
+                            case 8:
+                                curYear = dtNow.Year - 1;
+                                break;
+                            default:
+                                curYear = dtNow.Year;
+                                break;
+                        }
                         curMonth = m + 1;
                         curDay = d + 1;
                     }
@@ -904,14 +969,14 @@
                     {
                         if (setTimeType == "ValidTime")
                         {
-                            //妫�鏌ユ椂闂�
                             var flage = this.CheckValidTime(DoorLockCommonInfo.ValidDateYear, DoorLockCommonInfo.ValidDateMonth, DoorLockCommonInfo.ValidDateDay,
                                 curHour, curMin, curSec,
                                 DoorLockCommonInfo.InValidDateYear, DoorLockCommonInfo.InValidDateMonth, DoorLockCommonInfo.InValidDateDay,
                                 DoorLockCommonInfo.InValidDateHour, DoorLockCommonInfo.InValidDateMinute, DoorLockCommonInfo.InValidDateSecond);
                             if (flage == false)
                             {
-                                this.ShowMassage(ShowMsgType.Error, "澶辨晥鏃堕棿涓嶈兘澶т簬鐢熸晥鏃堕棿");
+                                var mess = Language.StringByID(R.MyInternationalizationString.ValidTimeNoMoreThanInValidTime);
+                                this.ShowMassage(ShowMsgType.Error, mess);
                                 return;
                             }
 
@@ -928,7 +993,8 @@
                                 curHour, curMin, curSec);
                             if (flage == false)
                             {
-                                this.ShowMassage(ShowMsgType.Error, "澶辨晥鏃堕棿涓嶈兘澶т簬鐢熸晥鏃堕棿");
+                                var mess = Language.StringByID(R.MyInternationalizationString.InvalidTimeNoLessThanValidTime);
+                                this.ShowMassage(ShowMsgType.Error, mess);
                                 return;
                             }
 
@@ -968,7 +1034,7 @@
             + inValidHour.ToString().PadLeft(2, '0')
             + inValidMinute.ToString().PadLeft(2, '0')
             + inValidSecond.ToString().PadLeft(2, '0');
-
+            var aaaa = nowValue1.CompareTo(nowValue2);
             if (nowValue1.CompareTo(nowValue2) == 1)
             {
                 return false;

--
Gitblit v1.8.0