我复制过来的,不过解释清了。最后,实际例子在下面:
DateDiff (I , D1 , D2[,FW[,FY]])
计算两个日期之间的期间
I :设定两个日期之间的期间计算之单位。譬如 >I="m" 表示计算的单位为月。 >I 的设定值如:
yyyy > Year 年
q Quarter 季
m Month 月
d Day 日
w Weekday 星期
h Hour 时
n Minute 分 ·[这里应该用n代表,很多书说m其实是错的]·
s Second 秒
D1 ,D2:计算期间的两个日期表达式,若 >date1 较早,则两个日期之间的期间结果为正值;若 >date2 较早, 则结果为负值。
FW :设定每周第一天为星期几, 若未设定表示为星期天。 >FW 的设定值如下:
0 使用 >API 的设定值。
1 星期天
2 星期一
3 星期二
4 星期三
5 星期四
6 星期五
7 星期六
FY :设定一年的第一周, 若未设定则表示一月一日那一周为一年的第一周。 >FY 的设定值如下:
0 使用 >API 的设定值。
1 一月一日那一周为一年的第一周
2 至少包括四天的第一周为一年的第一周
3 包括七天的第一周为一年的第一周
新建工程-添加一个timer控件
放入代码
Dim d1, d2
Private Sub Form_Load()
d1 = Now
Timer1Interval = 1000
End Sub
Private Sub Timer1_Timer()
d2 = Now
DebugPrint DateDiff("s", d1, d2, vbMonday, vbFirstJan1)
End Sub
这个是计算两个日期相差秒数的。
datestr=now() '取当前系统日期
sday=year(datestr)&"-"&month(datestr)&"-1" '当前月第一天
eday=DateAdd("m", 1, sday) '增加一个月时间
eday=DateAdd("d", -1, eday) '减去一天就是月末日期
eday=day(eday) '得到当月天数
输入如下代码试试就知道了
Sub test()MsgBox VBANow()
MsgBox VBATime
MsgBox VBADate
MsgBox Format(Now(), "aaaa")
MsgBox Format(Date, "aaaa")
End Sub
VB内置的Weekday函数就可以返回星期
Weekday(date[, firstdayofweek])
-- date: 必要; Date类型; 要求的日期
-- firstdayofweek: 可选; vbDayOfWeek类型; 定义每周第一天(默认为星期天)
Weekday返回一个Integer, 代表每周第几天
============================================
WeekdayName(weekday[, abbreviate][, firstdayofweek])
-- weekday: 必要; Long类型; 每周第几天
-- abbreviate: 可选; Boolean类型; 表示星期的名称是否被缩写(默认为False)
-- firstdayofweek: 可选; vbDayOfWeek类型; 定义每周第一天(默认为星期天)
WeekdayName返回一个String, 如"星期一", 但根据不同的系统, 也会返回如"Monday"
============================================
你也可以不用WeekdayName自己得到星期名
Choose(Weekday(#8/8/2008#, vbMonday), "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日")
ActiveCellFormulaR1C1 = Date & "在" & Year(Date) & "年的第" & DateDiff("ww", Year(Date) & "/01/01", Date) + 1 & "周"
方法/步骤
1
1、按“ALT+F11”两个按键,d出VBA模式
右击Thisworkbook-插入-模块
2
拷贝下面代码到空白处,然后关闭VBA
Function week2Day(y As Integer, i As Integer, k As Integer) As String
Dim datetemp As Date, j As Integer
If i > 52 Then
MsgBox ("一年最多只有52个周!")
weekFristDay = "1900-1-1"
Exit Function
End If
datetemp = y & "-" & 1 & "-" & 1
j = VBAWeekday(datetemp, vbMonday)
j = (8 - j) + (i - 2) 7
datetemp = DateAdd("d", j + k - 1, datetemp)
week2Day = CStr(datetemp)
End Function
3
在空单元格中输入下面函数
=week2day(2014,1,5) ‘其中第一个参数是年,第二个参数是第几周,第三个参数该周第几天,该函数返回为2014-1-3日
VB获取星期用WeekDay函数,怎么用看MSDN吧,那比我权威,下面是部分内容:
返回一个 Integer 值,该值包含表示周中某一天的数。
Public Function Weekday( _
ByVal DateValue As DateTime, _
Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeekSunday _
) As Integer
参数
DateValue
必选项。所要确定为该周某一天的 Date 值。
DayOfWeek
可选项。选自 FirstDayOfWeek 枚举的值,该枚举用于指定周的第一天。若未指定,则使用 FirstDayOfWeekSunday。
设置
DayOfWeek 参数可以有以下设置之一。
枚举值 值 说明
FirstDayOfWeekSystem 0 系统设置中指定的周的第一天
FirstDayOfWeekSunday 1 星期日(默认)
FirstDayOfWeekMonday 2 星期一(依照 ISO 8601 标准第 317 节)
FirstDayOfWeekTuesday 3 星期二
FirstDayOfWeekWednesday 4 星期三
FirstDayOfWeekThursday 5 星期四
FirstDayOfWeekFriday 6 星期五
FirstDayOfWeekSaturday 7 星期六
异常/错误
异常类型 错误号 条件
ArgumentException 5 DayOfWeek 小于 0 或大于 7。
备注
Weekday 函数所返回的值与 FirstDayOfWeek 枚举的值相对应;即 1 表示星期天,7 表示星期六。
若 DayOfWeek 小于 0 或大于 7,则发生 ArgumentException 错误。
注意 Weekday 使用取自 SystemGlobalization 命名空间中 CultureInfo 类 CurrentCulture 属性的当前日历设置。默认 CurrentCulture 值由“控制面板”设置决定。
示例
本示例使用 Weekday 函数从指定日期中获取星期几部分。
Dim MyDate As Date
Dim MyWeekDay As Integer
MyDate = #2/12/1969# ' Assign a date
MyWeekDay = Weekday(MyDate) ' MyWeekDay contains 4 because
' MyDate represents a Wednesday
以上就是关于VB DateDiff 用法全部的内容,包括:VB DateDiff 用法、VB怎样获取指定年月的天数、在excel的VBA里如何获取日期和星期几等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)