最近折腾什么周期性工作安排,对时间的操作加强了一点,得出在应用软件中时间真是个注意的地方,像客户要求“2006-03-16 12:00:00” 或者是“2006年03月16日 12:00:00” 。他们说到很简单,但是落实到我们这里不是很难得活,但是心情上总是有点烦躁,在此,我为天下程序员打抱个不平。嘿嘿,当然,俺也自我安慰一下,言归正传,我把时间操作的心得贴出来,共享之:
一、取某月的最后一天
法一、使用算出该月多少天,年+月+加上多少天即得,举例取今天这个月的最后一天
private void getlastdateformonth(datetime dtstart,out datetime dtend)
{
int dtyear,dtmonth;
dtstart = datetime.now;
dtyear = dtstart.year;
dtmonth = dtstart.month;
int monthcount = datetime.daysinmonth(dtyear,dtmonth);
dtend = convert.todatetime(dtyear.tostring()+"-"+dtmonth.tostring()+"-"+monthcount);
}
法二、取出下月的第一天减去一天便是这个的最后一天
private void getlastdateformonth(datetime dtstart,out datetime dtend)
{
int dtyear,dtmonth;
dtstart = datetime.now.addmonths(1);
dtyear = dtstart.year;
dtmonth = dtstart.month;
dtend = convert.todatetime(dtyear.tostring()+"-"+dtmonth.tostring()+"-"+"1").adddays(-1);
}
二、时间差的计算
法一、使用timespan ,同时也介绍一下timespan的用法
相关属性和函数
add:与另一个timespan值相加。
days:返回用天数计算的timespan值。
duration:获取timespan的绝对值。
hours:返回用小时计算的timespan值
milliseconds:返回用毫秒计算的timespan值。
minutes:返回用分钟计算的timespan值。
negate:返回当前实例的相反数。
seconds:返回用秒计算的timespan值。
subtract:从中减去另一个timespan值。
ticks:返回timespan值的tick数。
totaldays:返回timespan值表示的天数。
totalhours:返回timespan值表示的小时数。
totalmilliseconds:返回timespan值表示的毫秒数。
totalminutes:返回timespan值表示的分钟数。
totalseconds:返回timespan值表示的秒数。
简单示例:
datetime d1 =new datetime(2004,1,1,15,36,05);
datetime d2 =new datetime(2004,3,1,20,16,35);
timespan d3 = d2.subtract(d1);
lbtime.text = "相差:"
+d3.days.tostring()+"天"
+d3.hours.tostring()+"小时"
+d3.minutes.tostring()+"分钟"
+d3.seconds.tostring()+"秒";
法二、使用sql中的datediff函数
使用方法:datediff ( datepart , startdate , enddate )
它能帮你取出你想要的各种形式的时间差,如相隔多少天,多少小时,多少分钟等,具体格式如下:
日期部分 | 缩写 |
---|---|
year | yy, yyyy |
quarter | qq, q |
month | mm, m |
dayofyear | dy, y |
day | dd, d |
week | wk, ww |
hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
新闻热点
疑难解答