时间显示控件(yyyyMMDD HH:MM)

在各种项目里都少不了时间的出现,有时候我们要选择时间,但有时候只能选择年-月-日 没有时分,有时候为了处理这种时间显示还要花点时间来处理,在这种情况下就写了一个简单的时间控件:

下面是代码片断:
  1 using System;
  2 using System.Web.UI;
  3 using System.Web.UI.WebControls;
  4 using System.ComponentModel;
  5 using System.ComponentModel.Design;
  6 
  7 namespace HBControls
  8 {
  9     
 10     /// <summary>
 11     ///作者:王永强|HeroBeast|海尔比斯特
 12     ///时间:2006-12-24
 13     ///功能:显示为:2008-02-12 12:01的时间格式,支持多语言
 14     /// </summary>
 15     [DefaultProperty("Text"), 
 16     ToolboxData("<{0}:HBDateTime runat=server></{0}:HBDateTime>")]
 17     public class HBDateTime : System.Web.UI.WebControls.WebControl,INamingContainer
 18     {
 19         //声明变量
 20         private string _strText;    //时间
 21         private string _strHTCPath; //HTC控件的路径
 22         private string _strAuthor ="HeroBeast"//作者
 23         private string _strTime=DateTime.Now.ToShortDateString();//开发时间
 24         
 25 
 26         private TextBox         _textBox; //日期
 27         private DropDownList _drpHour; //小时
 28         private DropDownList _drpMin;  //分钟
 29 
 30         private string _Hour;
 31         private string _Min;
 32 
 33         public string Hour
 34         {
 35             get
 36             {
 37                 return _Hour;
 38             }
 39             set
 40             {
 41                 _Hour = value;
 42             }
 43         }
 44 
 45         public string Min
 46         {
 47             get
 48             {
 49                 return _Min;
 50             }
 51             set
 52             {
 53                 _Min = value;
 54             }
 55         }
 56 
 57         //构造
 58         public HBDateTime()
 59         {
 60             //默认显示为当前时间
 61             this.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm",System.Globalization.DateTimeFormatInfo.InvariantInfo);
 62             _strAuthor = "HeroBeast";
 63             _strTime = DateTime.Now.ToShortDateString();
 64 
 65             
 66         }
 67         //开发时间
 68         [
 69         Bindable(true),
 70         Category("DevelopTime"),
 71         DefaultValue(""),
 72         Description("开发时间")
 73         ]
 74         public string DevelopTime
 75         {
 76             get { return _strTime;  }
 77             //set { _strAuthor = value; }
 78         }
 79         //作者
 80         [
 81         Bindable(true),
 82         Category("Author"),
 83         DefaultValue(""),
 84         Description("作者")
 85         ]
 86         public string Author
 87         {
 88             get { return _strAuthor;  }
 89             //set { _strAuthor = value; }
 90         }
 91         //
 92         [
 93         Bindable(true),
 94         Category("Appearance"),
 95         DefaultValue(""),
 96         Description("设置HTC日期控件的路径")
 97         ]
 98         public string HTCPath
 99         {
100             get { return _strHTCPath;  }
101             set { _strHTCPath = value; }
102         }
103         //定义属性
104         [
105         Bindable(true),
106         Category("Appearance"),
107         DefaultValue(""),
108         Description("获得或设置控件上的时间(格式:2006-10-14 17:15)")
109         ]
110         public string Text
111         {
112             get 
113             {
114                 EnsureChildControls();
115                 //组合成时间格式
116                 _strText = this._textBox.Text.Trim()+" "+this._drpHour.SelectedValue+":"+this._drpMin.SelectedValue;
117                 return _strText;
118             }
119 
120             set 
121             {
122                 EnsureChildControls();
123                 string strTemp = Convert.ToDateTime(value).ToString("yyyy-MM-dd HH:mm",System.Globalization.DateTimeFormatInfo.InvariantInfo);
124                 
125                 _textBox.Text = strTemp.Substring(0,10).ToString();
126                 _drpHour.SelectedIndex = _drpHour.Items.IndexOf(_drpHour.Items.FindByValue(strTemp.Substring(11,2).ToString()));
127                 string aa = strTemp.Substring(11,2).ToString();
128                 _drpMin.SelectedIndex = _drpMin.Items.IndexOf(_drpMin.Items.FindByValue(strTemp.Substring(14,2).ToString()));
129             }
130         }
131 
132         //重写Control属性
133         public override ControlCollection Controls
134         {
135             get
136             {
137                 EnsureChildControls();
138                 return base.Controls;
139             }
140         }
141 
142         //重写CreateChildControls方法,将子控件添加到复合控件中
143         protected override void CreateChildControls()
144         {
145             Controls.Clear();//清除所有子控件
146 
147             _textBox = new TextBox();
148 
149             //设置TextBox为只读
150             _textBox.ReadOnly = true;
151             //样式
152             _textBox.CssClass="dateTimePicker";
153             _textBox.Width=Unit.Pixel(80);
154             //
155             _drpHour = new DropDownList();
156 
157             for(int j=0;j<24;j++)
158             {
159                 if(j<10)
160                 {
161                     _drpHour.Items.Add("0"+j.ToString());
162                 }
163                 else
164                 {
165                     _drpHour.Items.Add(j.ToString());
166                 }
167 
168                 
169             }
170 
171             _drpMin  = new DropDownList();
172 
173             for(int i=0;i<60;i++)
174             {
175                 if(i<10)
176                 {
177                     _drpMin.Items.Add("0"+i.ToString());
178                 }
179                 else
180                 {
181                     _drpMin.Items.Add(i.ToString());
182                 }
183             }
184 
185             this.Controls.Add(_textBox);
186             this.Controls.Add(_drpHour);
187             this.Controls.Add(_drpMin);
188         }
189 
190         //重写Render方法
191         protected override void Render(HtmlTextWriter output)
192         {
193             //写日期控件的样式
194             output.Write("<style>BODY { }TABLE { FONT-SIZE: 12px }.dateTimePicker { BEHAVIOR: url("+this._strHTCPath+") }</style>");
195 
196             //
197             output.AddAttribute(HtmlTextWriterAttribute.Border,"0px");
198             output.AddAttribute(HtmlTextWriterAttribute.Cellpadding,"0px");
199             output.AddAttribute(HtmlTextWriterAttribute.Cellspacing,"0px");
200             output.RenderBeginTag(HtmlTextWriterTag.Table);
201             output.RenderBeginTag(HtmlTextWriterTag.Tr);
202             output.RenderBeginTag(HtmlTextWriterTag.Td);
203             //
204             _textBox.RenderControl(output);
205             output.RenderEndTag();
206 
207             output.RenderBeginTag(HtmlTextWriterTag.Td);
208             _drpHour.RenderControl(output);
209             output.Write(_Hour);
210             output.RenderEndTag();
211 
212             output.RenderBeginTag(HtmlTextWriterTag.Td);
213             _drpMin.RenderControl(output);
214             output.Write(_Min);
215             output.RenderEndTag();
216 
217             output.RenderEndTag();//tr
218 
219             output.RenderEndTag();//table
220         }
221     }
222 }
223 

这里面的日期是信赖于一个HTC控件在这里可以下载到:
HTC日期控件

下面是源代码:
时间控件源代码

希望大家指教,我会虚心改正学习。

原文地址:https://www.cnblogs.com/HeroBeast/p/656399.html