在个人重构中,关于时间的格式转换和运算出现的次数还是比较多的,所以今天我们将时间的一些知识学习下。

首先我们先来看下关于时间格式的转换:


时间格式转换的方式有很多,我们这里就直接用ToString方法来转换日期的显示格式:

DateTime.Now.ToString("yyyy/MM/ddhh:mm:ss")

DateTime.Now.ToString("yyyy/MM/dd")

如果我们想得到具体的年月日时分秒就可以用上面的第一个,如果只想得到年月日就用第二个,这个用起来是很简单的,我们现在呢,就将一些常见的格式跟大家总结一下。

d月中的某一天。一位数的日期没有前导零。

dd月中的某一天。一位数的日期有一个前导零。

M月份数字。一位数的月份没有前导零。

MM月份数字。一位数的月份有一个前导零。

y不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。

yy不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。

yyyy包括纪元的四位数的年份。

h12 小时制的小时。一位数的小时数没有前导零。

hh12 小时制的小时。一位数的小时数有前导零。

H24 小时制的小时。一位数的小时数没有前导零。

HH24 小时制的小时。一位数的小时数有前导零。

m分钟。一位数的分钟数没有前导零。

mm分钟。一位数的分钟数有一个前导零。


s秒。一位数的秒数没有前导零。

ss秒。一位数的秒数有一个前导零。


f秒的小数精度为一位。其余数字被截断。

ff秒的小数精度为两位。其余数字被截断。

t 在AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项的第一个字符(如果存在)。

tt 在 AMDesignator 或PMDesignator 中定义的 AM/PM 指示项(如果存在)。

: 在TimeSeparator 中定义的默认时间分隔符。

/ 在DateSeparator 中定义的默认日期分隔符。

我想通过以上的这些知识我们就可以随心所欲的进行时间的转换了。在说完时间的格式转换以后呢,我们接下来看下,关于时间的运算。

时间的运算主要涉及到一个具体函数的应用。


这个函数就是

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])


比如说如果我想获得两个时间段strEndDate(结束时间)和strStartDate(开始时间)之间的小时间隔就可以用下面这个算法,但是一定是较早的时间在前,较晚的时间在后,这一点是需要注意的。

strDays =DateDiff("h", strStartDate, strEndDate)

同样的我们不仅可以获取小时间隔,还可以获取天、年、分钟、秒等等。



String

Unit of time difference

DateInterval.Day

d

Day

DateInterval.DayOfYear

y

Day

DateInterval.Hour

h

Hour

DateInterval.Minute

n

Minute

DateInterval.Month

m

Month

DateInterval.Quarter

q

Quarter

DateInterval.Second

s

Second

DateInterval.Weekday

w

Week

DateInterval.WeekOfYear

ww

Calendar week

DateInterval.Year

yyyy

Year


我想通过以上这些知识,关于时间的转换和运算就再也不会出现问题了。