c#日期的格式化及c#日期时间的比较大全
在开发网站的过程中,有时希望将显示的结果以某种形式显示出来,例如,将数字格式化为金额、生成“000”格式的编码、将小写金额转换为大写金额等。本实例介绍如何将日期格式化为指定的格式,运行结果如图7.4所示,显示了将系统日期格式化为短日期格式和长日期格式两种形式。
将系统日期格式化为短日期格式的代码如下:
Label2.Text = System.DateTime.Now.ToShortDateString().ToString();
将系统日期格式化为长日期格式的代码如下:
Label3.Text = System.DateTime.Now.ToLongDateString().ToString();
将日期格式化为指定格式的常用方法如表7.2所示。
表7.2 将日期格式化为指定格式的常用方法
方 法 名 称 |
说 明 |
ToShortDateString() |
将指定日期值转换为其等效的短日期字符串表示形式 |
ToLongDateString() |
将指定日期值转换为其等效的长日期字符串表示形式 |
ToLongTimeString() |
将指定日期值转换为其等效的长时间字符串表示形式 |
ToShortTimeString() |
将指定日期值转换为其等效的短时间字符串表示形式 |
ToLocalTime() |
将当前DateTime对象的值转换为本地时间 |
在开发网站的过程中,有时会遇到日期格式相互转换的问题,例如,将系统日期格式化为短日期或长日期、将短日期格式化为长日期等,本实例介绍如何将短日期格式化为长日期,运行结果如图7.5所示。
将短日期格式化为长日期的代码如下:
DateTime dt=Convert.ToDateTime(System.DateTime.Now.ToShortDateString());
Label2.Text = dt.ToLongDateString();
本实例实现的主要功能是,将形如YYYY-MM-DD格式的数字日期转化为中文。具体步骤如下:
首先,使用Javascript语言自定义一个transformchinese(s)方法,将数字日期转化为中文,代码如下:
<script>
var chinese = ['零','一','二','三','四','五','六','七','八','九'];
var len = ['十'];
var ydm =['年','月','日'];
function etchinese(s)
{
//将单个数字转化成中文
s=""+s;
slen = s.length;
var result="";
for(var i=0;i<slen;i++)
{
result+=chinese[s.charAt(i)];
}
return result;
}
function specialcharacter(s)
{
//对特殊情况进行处理,并调用etchinese(s)方法,返回相关的中文
s=""+s;
var result="";
if(s.length==2)
{
if(s.charAt(0)=="1")
{
if(s.charAt(1)=="0")return len[0];
return len[0]+chinese[s.charAt(1)];
}
if(s.charAt(1)=="0")return chinese[s.charAt(0)]+len[0];
return chinese[s.charAt(0)]+len[0]+chinese[s.charAt(1)];
}
return etchinese(s)
}
function transformchinese(s)
{
//验证输入的日期格式,并调用specialcharacter(s)方法,将相关数字转化为中文
var datePat = /^(\d{2}|\d{4})(\/|-)(\d{1,2})(\2)(\d{1,2})$/;
var matchArray = s.match(datePat);
var ok="";
if (matchArray == null) return false;
for(var i=1;i<matchArray.length;i=i+2)
{
ok+=specialcharacter(matchArray[i]-0)+ydm[(i-1)/2];
}
return ok;
}
</script>
然后,在HTML视图的body中添加如下代码,调用transformchinese(s),将数字日期转化为中文。
YYYY-MM-DD:<input type=text name="EData" value="2007-1-18">
中文显示:<input type=text name="CData">
<input type=button onclick="document.all.CData.value=transformchinese(document.all.EData.value)"
value="转换">
本实例主要是使用DateTime结构的CompareTo方法来比较当前系统时间与数字“13”的大小,如果当前系统时间大于“13”,则显示“下午好”;否则,显示“上午好”。代码如下:
//将系统时间与数据13进行比较,以获取问候语
int Time = DateTime.Now.Hour.CompareTo(13);
string str;
if(Time>0)
{
str="下午好!";
}
else
{
str = "上午好!";
}
Label3.Text = str;
在实际开发程序中,经常会遇到比较时间的问题,下面介绍两种比较时间的方法。
方法一:时间与时间之间直接比较。
string strTime1=DateTime.Now.ToString();
string strTime2 = DateTime.Now.AddDays(-1).ToString();
DateTime dt1 = Convert.ToDateTime(strTime1);
DateTime dt2 = Convert.ToDateTime(strTime2);
if (dt1 > dt2)
{
……其他操作
}
方法二:使用CompareTo方法,实现时间与时间之间的比较。
string strTime1=DateTime.Now.ToString();
string strTime2 = DateTime.Now.AddDays(-1).ToString();
DateTime dt1 = Convert.ToDateTime(strTime1);
DateTime dt2 = Convert.ToDateTime(strTime2);
int n = dt1.CompareTo(dt2);
if (n > 0)
{
……其他操作
}
在开发OA办公系统时,可以通过获取员工的实到时间和上班时间的差值来查看员工是否旷工。代码如下:
protected void Page_Load(object sender, EventArgs e)
{
DateTime get_time1 = Convert.ToDateTime(DateTime.Now.ToString());
DateTime sta_ontime1 = Convert.ToDateTime("8:00:00");
TimeSpan sta1 = TimeSpan.FromHours(4);
if ((get_time1 - sta_ontime1) > sta1)
{
Response.Write("时间差是:" + (get_time1 - sta_ontime1));
Response.Write("旷工半天");
}
}
- 上一篇:ASP.NET缓存Cache应用简单学习
- 下一篇:解决Ajax提交中文乱码方案