From d6fb0646531172f23648441c224cdcccd721b894 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期一, 14 十二月 2020 09:59:01 +0800
Subject: [PATCH] 请合并代码,完成晾衣架最终功能。

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/NormalControls/DateSelectControl.cs |  196 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 196 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/NormalControls/DateSelectControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/NormalControls/DateSelectControl.cs
new file mode 100755
index 0000000..97a1833
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/NormalControls/DateSelectControl.cs
@@ -0,0 +1,196 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shared.Phone.UserCenter
+{
+    /// <summary>
+    /// 鏃ユ湡閫夋嫨鎺т欢(璁剧疆鍜岃幏鍙栧��,璇蜂娇鐢� dateValue)
+    /// </summary>
+    public class DateSelectControl : ButtonBase
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鏃ユ湡閫夋嫨鏃堕棿(8浣�,濡傦細20101231)
+        /// </summary>
+        public Action<string> DateSelectEvent = null;
+        /// <summary>
+        /// 鏃ユ湡鏍煎紡
+        /// </summary>
+        private string dateFomat = string.Empty;
+        /// <summary>
+        /// 鏍囬淇℃伅
+        /// </summary>
+        private string titleText = string.Empty;
+
+        private string m_dateValue = "00000000";
+        /// <summary>
+        /// 璁剧疆鎴栬�呰幏鍙栨棩鏈熷��(8浣�,濡傦細20101231)
+        /// </summary>
+        public string dateValue
+        {
+            get { return m_dateValue; }
+            set
+            {
+                this.m_dateValue = value;
+
+                int year = Convert.ToInt32(value.Substring(0, 4));
+                int month = Convert.ToInt32(value.Substring(4, 2));
+                int day = Convert.ToInt32(value.Substring(6, 2));
+
+                var myTime = new DateTime(year, month, day);
+                this.Text = myTime.ToString(this.dateFomat);
+            }
+        }
+
+        /// <summary>
+        /// 骞�
+        /// </summary>
+        public int Year
+        {
+            get { return Convert.ToInt32(m_dateValue.Substring(0, 4)); }
+        }
+
+        /// <summary>
+        /// 鏈�
+        /// </summary>
+        public int Month
+        {
+            get { return Convert.ToInt32(m_dateValue.Substring(4, 2)); }
+        }
+
+        /// <summary>
+        /// 鏃�
+        /// </summary>
+        public int Day
+        {
+            get { return Convert.ToInt32(m_dateValue.Substring(6, 2)); }
+        }
+
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鏃ユ湡閫夋嫨鎺т欢(璁剧疆鍜岃幏鍙栧��,璇蜂娇鐢� dateValue)
+        /// </summary>
+        /// <param name="i_titleText">鏍囬鏂囨湰</param>
+        /// <param name="i_dateFomat">鏃ユ湡鏍煎紡</param>
+        public DateSelectControl(string i_titleText = "", string i_dateFomat = "yyyy/MM/dd")
+        {
+            this.dateFomat = i_dateFomat;
+            this.titleText = i_titleText;
+
+            //鐢ㄦ潵璁$畻闀垮害鐨�
+            string dateTextTemp = DateTime.Now.ToString(i_dateFomat);
+            this.TextSize = 12;
+            this.Text = dateTextTemp;
+
+            this.InitSize(this.GetRealWidthByText(), Application.GetRealHeight(50), false);
+            this.Text = string.Empty;
+
+            //寮硅捣鏃ユ湡閫夋嫨
+            this.ButtonClickEvent += (sender, e) =>
+            {
+                //鏃ユ湡閫夋嫨
+                this.DoSelectDate();
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鏃ユ湡閫夋嫨___________________________
+
+        /// <summary>
+        /// 鏃ユ湡閫夋嫨
+        /// </summary>
+        private void DoSelectDate()
+        {
+            var listYear = new List<string>();
+            int nowYear = Convert.ToInt32(DateTime.Now.ToString("yyyy"));
+            for (int i = 0; i < 6; i++)
+            {
+                //浜斿勾鏃堕棿
+                listYear.Insert(0, (nowYear - i).ToString());
+            }
+            //鏈�
+            var listMonth = new List<string>();
+            var monthText = Language.StringByID(R.MyInternationalizationString.Month);
+            for (int i = 1; i <= 12; i++)
+            {
+                listMonth.Add(i.ToString().PadLeft(2, '0') + monthText);
+            }
+            //鏃�
+            var listDay = new List<string>();
+            var dayText = Language.StringByID(R.MyInternationalizationString.Day);
+            for (int i = 1; i <= 31; i++)
+            {
+                listDay.Add(i.ToString().PadLeft(2, '0') + dayText);
+            }
+            PickerView.ShowNormal(listYear, listMonth, listDay, (iyear, imonth, iday) =>
+            {
+                //鑾峰彇姝g‘鐨勬棩鏈熸枃鏈�
+                string datetTemp = this.GetRightDateText(Convert.ToInt32(listYear[iyear]), Convert.ToInt32(listMonth[imonth].Substring(0, 2)), Convert.ToInt32(listDay[iday].Substring(0, 2)));
+                bool change = datetTemp != this.dateValue;
+                //鏂囨湰鏄剧ず
+                this.dateValue = datetTemp;
+                if (change == true)
+                {
+                    //鍊兼敼鍙樻墠浼氳皟鐢ㄥ洖璋冨嚱鏁�
+                    DateSelectEvent?.Invoke(datetTemp);
+                }
+            },
+            listYear.IndexOf(m_dateValue.Substring(0, 4)),
+            listMonth.IndexOf(m_dateValue.Substring(4, 2) + monthText),
+            listDay.IndexOf(m_dateValue.Substring(6, 2) + dayText),
+            this.titleText,
+            Language.StringByID(R.MyInternationalizationString.uFinish),
+            Language.StringByID(R.MyInternationalizationString.uCancel));
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鑾峰彇姝g‘鐨勬棩鏈熸枃鏈�
+        /// </summary>
+        /// <param name="year"></param>
+        /// <param name="month"></param>
+        /// <param name="day"></param>
+        /// <returns></returns>
+        private string GetRightDateText(int year, int month, int day)
+        {
+            if (month == 4 || month == 6 || month == 9 || month == 11)
+            {
+                if (day > 30)
+                {
+                    day = 30;
+                }
+            }
+            else if (month == 2)
+            {
+                //闂板勾
+                if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
+                {
+                    if (day > 29)
+                    {
+                        day = 29;
+                    }
+                }
+                else
+                {
+                    if (day > 28)
+                    {
+                        day = 28;
+                    }
+                }
+            }
+            return year.ToString() + month.ToString().PadLeft(2, '0') + day.ToString().PadLeft(2, '0');
+        }
+
+        #endregion
+    }
+}

--
Gitblit v1.8.0