| | |
| | | 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; |
| | |
| | | this.doorLock = doorLock; |
| | | setTimeType = timeType; |
| | | BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor; |
| | | //读门锁时区时间 |
| | | DoorLockCommonInfo.GetDoorLockZoneTime(); |
| | | ZigBee.Device.ZbGateway.StatusList.Add(this); |
| | | } |
| | | #endregion |
| | |
| | | }; |
| | | this.midFrameLayout.AddChidren(midTopFrameLayout); |
| | | |
| | | var dtNow = DateTime.Now; |
| | | var dtNow = DoorLockCommonInfo.DoorlockZoneTime;// DateTime.Now; |
| | | for (int i = 0; i < 2; i++) |
| | | { |
| | | #region MidTopFrameLayout UI |
| | |
| | | /// <summary> |
| | | /// 添加【门锁时间】行(门锁专用) |
| | | /// </summary> |
| | | /// <param name="zoneFrameLayout"></param> |
| | | private void AddDoorLocksTimeRow(FrameLayout zoneFrameLayout) |
| | | { |
| | | //门锁时间 |
| | |
| | | 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() |
| | |
| | | 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); |
| | |
| | | } |
| | | |
| | | /// <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 |
| | | |
| | |
| | | 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(""); |
| | |
| | | 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; |
| | |
| | | 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;
|
| | | }
|
| | | |
| | |
| | | } |
| | | 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; |
| | | } |
| | |
| | | { |
| | | 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;
|
| | | } |
| | | |
| | |
| | | curHour, curMin, curSec); |
| | | if (flage == false)
|
| | | {
|
| | | this.ShowMassage(ShowMsgType.Error, "失效时间不能大于生效时间");
|
| | | var mess = Language.StringByID(R.MyInternationalizationString.InvalidTimeNoLessThanValidTime); |
| | | this.ShowMassage(ShowMsgType.Error, mess);
|
| | | return;
|
| | | } |
| | | |
| | |
| | | + 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;
|