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