日期函数精解示例

先看一个小例子


Dim d1 As Date, d2 As Date
    d1 = DateAdd("m", 1, Date) '下个月今天
    d2 = CDate(Year(d1) & "-" & Month(d1)) '下一个月第一天
    d3 = DateAdd("d", -1, d2) '本月最后一天
    Print d1, d2, d3

日期函数的语法简表

CDate
CDate(date)
返回date类型的表达式,date 参数是任意有效的日期或字符串表达式。
MyDate = "October 19, 1962" MyShortDate = CDate(MyDate)

Date
Date
返回当前系统日期。不带()
MyDate = Date

DateAdd
DateAdd(interval, number, date) 
返回已添加指定时间间隔的日期。
下例将95 年1 月31 日加上一 个月:
NewDate =DateAdd("m", 1, "31-Jan-95")

DateDiff
DateDiff(interval,date1, date2)  
返回两个日期之间的时间间隔。
xx= DateDiff("d", Now, theDate)

DatePart
DatePart(interval, date)
返回给定日期的指定部分。参考interval参数的可选值。
GetQuarter =
    DatePart("q", TheDate)

DateSerial
DateSerial(year, month, day) 
对于指定的年、月、日,返回 Date 子类型的 Variant。
MyDate2 =
  DateSerial(1990-10, 8-2, 1)

DateValue
DateValue(date)
返回 Date 子类型的变量。date 参数应是字符串。
DateValue("September 11, 1963")

Day
Day(date)
返回1 到 31 之间的一个整数,代表某月中的一天。
MyDay = Day("October 19, 1962") 'MyDay =19。

Hour
Hour(Time)
返回0到23之间的一个整数,代表某小时数。Time参数是时间表达式。
MyTime = Now
MyHour = Hour(MyTime)

IsDate
IsDate(expression)
返回Boolean值指明某表达式是否可以转换为日期。expression 参数可以是任意可被识别为日期和时间的日期表达式或字符串表达式。
MyDate = "October 19, 1962" YourDate = #10/19/62#
NoDate = "Hello"
MyCheck= IsDate(MyDate) 'True MyCheck= IsDate(YourDate)'True MyCheck= IsDate(NoDate)  'False

Minute
Minute(Time)
返回0到59之间的整数,代表分钟。
MyVar = Minute(Now)  '=41

Month
Month(date)
返回 1到12 之间的一个整数,代表某月份数。
MyVar=Minute("October 19, 1962")
'MyVar = 10

MonthName
MonthName(month)
返回表明指定月份的字符串。month是数值
thismanth = MonthName(10)'
’thismanth = "October"

Now
Now
返回系统的当前日期和时间值。
Today = Now
' today = "02-07-04 11:41:14"

Second
Second(Time) 
返回 0到 59之间的一个整数,代表某秒数。
MySec = Second(Now)
'MySec =14

Time
Time
返回当前的系统时间。
MyTime = Time
'MyTime = "11:41:14"

Timer
Timer
返回午夜 12 时以后已经过去的秒数。
  

TimeSerial
TimeSerial(h,m,s)
返回含有指定时h、分m、秒s的时间。
MyTime1 = TimeSerial(12-6,-15,0)
' 返回 "5:45:00 AM."

TimeValue
TimeValue(time)
返回包含时间的 Date子类型的变量。
time 参数通常是代表时间表达式。
MyTime = TimeValue("4:35:17 PM")

Weekday
Weekday(date)
返回代表一星期中某天的整数0到6。
MyDate = #October 19, 1962#
MyWeekDay = Weekday(MyDate)

WeekdayName
WeekdayName(weekday)
返回指定某天是星期几的字符串。
MyDate= WeekDayName(1)'Sunday

Year
Year(date)
返回一个代表某年的整数。
MyYear = Year(now)  '2002

FormatDateTime
FormatDateTime(Date[, NamedFormat])
返回表达式,此表达式已被格式化为日期或时间。NamedFormat=0,1,2,3,4
GetCurrentDate =
     FormatDateTime(Date, 1)

上表的语法格式中没有括号的表示无参数,date和time分别表示日期类型和时间类型的参数。
·         给出日期常量的方法有几种。用字符串"1994-3-21","94,03,20","March,21,1994"都可以,当然是在可以接收字符串的函数处使用。必须用日期型的地方可以用“#”号括起来,如#94-3-21#。
·         月名和星期名在中文版Window98中返回的是“五月”或“星期四”这样的名称,而不是英文名。它取决于系统设定的日期格式。
下表给出interval参数的可选值,它适用于dateadd, Datediff, DatePart三个函数。

设置 描述 
  
yyyy 年 
  
q    季 
  
m    月 
  
y 一年的日数 
  
d    日 
  
w 一周的日数 
  
ww   周 
  
h    时 
  
n   分钟 
  
s    秒 
  

常数                 值             描述 
  
vbUseSystem          0         使用 NLS API 设置。 
  
vbSunday             1          星期日(缺省值) 
  
vbMonday             2          星期一 
  
vbTuesday            3          星期二 
  
vbWednesday          4          星期三 
  
vbThursday           5          星期四 
  
vbFriday             6          星期五 
  
vbSaturday           7          星期六 
  
---------------------------------------------------------------------------- 
  
weekdayname 取得星期几的函数:例如:weekdayname(weekday(date)) 输出:星期五 
  
monthname   取得汉字月份的函数: 例如:monthname(month(date))输出:十一月 
  
---------------------------------------------------------------------------- 
  
datediff("d",#2005/11/12#,#2005/12/12#) 计算两个日期之间相隔的天数 30 
  
可以使用 DateDiff 来计算两个日期之间相隔几日,或计算从今天起到年底还有多少个星期。 
  
---------------------------------------------------------------------------- 
  
DateAdd("d", -7, #9/15/1999#)  计算1999年9月15日七天前的日期 
  
DateAdd("d", +7, #9/15/1999#)  计算1999年9月15日七天后的日期 
  
可以用 DateAdd 来计算距今天为三十天的日期;或者计算距现在为 45 分钟的时间。 
  
---------------------------------------------------------------------------- 
  
Print Datepart("y",#1/27/2009#)      返回27,表示#1/27/2009#是一年的第27天 
  
---------------------------------------------------------------------------- 
  
print FormatDateTime(Date,vbShortTime) 返回一个日期和时间的显示格式。 
  
常数 值 描述 
  
vbGeneralDate 0 显示日期和/或时间。如果有日期部分,则用短日期格式显示。如果有时间部分,则用 
  
长时间格式显示。如果都有,两部分都显示。 
  
print FormatDateTime(now,vbGeneralDate) 
  
2009-1-28 0:07:03 
  
---------------------------------------------------------------------------- 
  
vbLongDate 1 用计算机区域设置值中指定的长日期格式显示日期。 
  
print FormatDateTime(now,vbLongDate) 
  
2009年1月28日 
  
---------------------------------------------------------------------------- 
  
vbShortDate 2 用计算机区域设置值中指定的短日期格式显示日期。 
  
print FormatDateTime(now,vbShortDate) 
  
2009-1-28 
  
---------------------------------------------------------------------------- 
  
vbLongTime 3 用计算机区域设置值中指定的时间格式显示时间。 
  
print FormatDateTime(now,vbLongTime) 
  
0:08:56 
  
---------------------------------------------------------------------------- 
  
vbShortTime 4 用24小时格式(hh:mm)显示时间。 
  
print FormatDateTime(now,vbShortTime) 
  
00:09 
  
---------------------------------------------------------------------------- 
  
把字符串转换成日期型: 
  
1:日期型变量=datevalue("2005/10/28")          2:日期型变量=timevalue("15:20:20") 
  
把数字转换成日期型: 
  
1:日期型变量=dateserial(年,月,日)           2:日期型变量=timeserial(时,分,秒) 
  
从现在开始到五分钟之后的精确日期和时间:        print now+timeserial(0,5,0) 
  
日期型变量=format(now,"dddd,yyyy/mm/dd, hh:mm:ss AM/PM) 
  
THUESDAY,2005/11/29 10:30:45 AM 
  
---------------------------------------------------------------------------- 
  
●DateValue 将字串转换成日期 
  
Dim Tmp As Date 
  
Tmp = DateVal("1999/5/1")→Tmp = 05/01/99 
  
Tmp = DateVal("99/5/1")→Tmp = 05/01/99 
  
Tmp = DateVal("99/05/01")→Tmp = 05/01/99 
  
Tmp = DateVal("05/01/99")→Tmp = 05/01/99 
  
Tmp = DateVal("05-01-99")→Tmp = 05/01/99 
  
Tmp = DateVal("05-01-1999")→Tmp = 05/01/99 
  
Tmp = DateVal("May/01/99")→Tmp = 05/01/99 
  
---------------------------------------------------------------------------- 
  
●DateSerial 将字数值换成日期 
  
Dim Tmp As Date 
  
Tmp = DateSeral(99,5,1)→Tmp = 05/01/99 
  
Tmp = DateSeral(1999,5,1)→Tmp = 05/01/99 
  
---------------------------------------------------------------------------- 
  
●TimeValue 将字串转换成时间 
  
Dim Tmp As Date 
  
Tmp = TimeVal("1:1:5")→Tmp = 01:01:05 AM 
  
Tmp = TimeVal("01:01:05")→Tmp = 01:01:05 AM 
  
Tmp = TimeVal("13:01:05")→Tmp = 01:01:05 PM 
  
Tmp = TimeVal("1:1:5 PM")→Tmp = 01:01:05 PM 
  
Tmp = TimeVal("PM 1:1:5")→Tmp = 01:01:05 PM 
  
Tmp = TimeVal("1:1:5 下午")→Tmp = 01:01:05 PM 
  
Tmp = TimeVal("下午 1:1:5")→Tmp = 01:01:05 PM 
  
---------------------------------------------------------------------------- 
  
●TimeSerial 将字数值换成日期 
  
Dim Tmp As Date 
  
Tmp = TimeSeral(1,1,5)→Tmp = 01:01:05 AM 
  
Tmp = TimeSeral(13,1,5)→Tmp = 01:01:05 PM