From 18b93d511dc764b469d7c4a7e755f7274f89cdb4 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期一, 27 四月 2020 17:55:14 +0800 Subject: [PATCH] 2020-4-27-1 --- ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs | 279 +++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 216 insertions(+), 63 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs index 8e98169..5c95989 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,93 @@ 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); + if (num == 0) + { + zoneText = Language.StringByID(R.MyInternationalizationString.CurZoneText0); + } + else + { + 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 +542,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 +596,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(""); @@ -697,12 +734,43 @@ { if (setTimeType == "ValidTime") { + string nowValue1 = DateTime.Now.ToString("yyyyMMdd"); + string nowValue2 = dtNow.Year.ToString() + curMonth.ToString().PadLeft(2, '0') + curDay.ToString().PadLeft(2, '0'); + if (nowValue1.CompareTo(nowValue2) == 1) + { + var mess = Language.StringByID(R.MyInternationalizationString.ValidTimeNoLessThanCurrentTime); + this.ShowMassage(ShowMsgType.Error, mess); + return; + } + //妫�鏌ユ椂闂� + 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) + { + var mess = Language.StringByID(R.MyInternationalizationString.ValidTimeNoMoreThanInValidTime); + this.ShowMassage(ShowMsgType.Error, mess); + return; + } DoorLockCommonInfo.ValidDateYear = dtNow.Year; DoorLockCommonInfo.ValidDateMonth = curMonth; DoorLockCommonInfo.ValidDateDay = curDay; } else - { + { + //妫�鏌ユ椂闂� + 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) + { + var mess = Language.StringByID(R.MyInternationalizationString.InvalidTimeNoLessThanValidTime); + this.ShowMassage(ShowMsgType.Error, mess); + return; + } + DoorLockCommonInfo.InValidDateYear = dtNow.Year; DoorLockCommonInfo.InValidDateMonth = curMonth; DoorLockCommonInfo.InValidDateDay = curDay; @@ -778,7 +846,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; } @@ -875,13 +975,36 @@ btnOk.MouseUpEventHandler += (sender1, e1) => { 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) + { + var mess = Language.StringByID(R.MyInternationalizationString.ValidTimeNoMoreThanInValidTime); + this.ShowMassage(ShowMsgType.Error, mess); + return; + } + DoorLockCommonInfo.ValidDateHour = curHour; DoorLockCommonInfo.ValidDateMinute = curMin; DoorLockCommonInfo.ValidDateSecond = curSec; } else - { + { + //妫�鏌ユ椂闂� + var flage = this.CheckValidTime(DoorLockCommonInfo.ValidDateYear, DoorLockCommonInfo.ValidDateMonth, DoorLockCommonInfo.ValidDateDay, + DoorLockCommonInfo.ValidDateHour, DoorLockCommonInfo.ValidDateMinute, DoorLockCommonInfo.ValidDateSecond, + DoorLockCommonInfo.InValidDateYear, DoorLockCommonInfo.InValidDateMonth, DoorLockCommonInfo.InValidDateDay, + curHour, curMin, curSec); + if (flage == false) + { + var mess = Language.StringByID(R.MyInternationalizationString.InvalidTimeNoLessThanValidTime); + this.ShowMassage(ShowMsgType.Error, mess); + return; + } + DoorLockCommonInfo.InValidDateHour = curHour; DoorLockCommonInfo.InValidDateMinute = curMin; DoorLockCommonInfo.InValidDateSecond = curSec; @@ -896,6 +1019,36 @@ } } } + + /// <summary> + /// 妫�鏌ユ椂闂� + /// </summary> + /// <returns></returns> + private bool CheckValidTime(int validYear, int validMoth, int validDay, int validHour, int validMinute, int validSecond + , int inValidYear, int inValidMoth, int inValidDay, int inValidHour, int inValidMinute, int inValidSecond) + { + //鐢熸晥鏃堕棿 + string nowValue1 = validYear.ToString() + + validMoth.ToString().PadLeft(2, '0') + + validDay.ToString().PadLeft(2, '0') + + validHour.ToString().PadLeft(2, '0') + + validMinute.ToString().PadLeft(2, '0') + + validSecond.ToString().PadLeft(2, '0'); + //澶辨晥鏃堕棿 + string nowValue2 = inValidYear.ToString() + + inValidMoth.ToString().PadLeft(2, '0') + + inValidDay.ToString().PadLeft(2, '0') + + 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; + } + return true; + } + #endregion #region 绉婚櫎鏂规硶 -- Gitblit v1.8.0