作者:iamlaosong

VBA中取 当前日期的函数是Date, 当前时间的函数是Time, 当前日期和时间一起取是Now。 日期转换成年月日的函数分别是:Year、Month、Day,参数可以用Date或Now取出的值。 时间转换成时分秒的 函数分别是:Hour、Minute、Second,参数可以用Time或Now取出的值。

MsgBox "当前时间:" & Now & Chr(10) & _
"时:" & Hour(Now) & Chr(10) & _
"分:" & Minute(Now) & Chr(10) & _
"秒:" & Second(Now)
MsgBox "当前日期:" & Now & Chr(10) & _
"年:" & Year(Now) & Chr(10) & _
"月:" & Month(Now) & Chr(10) & _
"日:" & Day(Now)

1、日期转换

很简单,直接用转换函数就可以了,例如:CDate("2012-12-31")

2、日期之间的天数

用datediff函数,注意,工作表单元格中用的函数名称是 datedif,少了一个f,而且参数顺序也不一样( =DATEDIF(A2,B2,"d") )。例如:

dt = Cells(2, 1)     ' 单元格内容:2013-1-1 09:35:08

dd = DateDiff("D", CDate("2012-12-31"), dt)

其中的“D”也可以换成其他字母,以便计算其它时间差(年月日时分秒等),比如 “W”表示计算两个日期之间周数, “H”表示计算两个日期之间的小时数数, 具体见本文最后的附录。

日期之间的天数最简单的就是直接相减 ,如果日期中包含时间,相减 是两个日期时间值相减,结果是个浮点数(时间差),计算天数 需要用datevalue转换(相当于去掉小数部分的取整)后才能计算, 例如:

dt = Cells(2, 1)     ' 单元格内容:2013-1-1 09:35:08

dd = DateValue(dt) - CDate("2012-12-31")

实际上, DateValue函数的值就是被转换日期距1900-1-1的天数加1,也就是说日期 1900-1-1的 DateValue函数值就是1,在此日期之前的日期Excel是不认的。日期时间本质就是一个浮点数,整数部分是日期,小数部分是时间。

3、时间差计算

时间差计算一般用TimeValue()函数将时间转换成时间值,然后计算。例如:

dt2 = Cells(2, 1)     ' 单元格内容:2013-1-1 09:35:08

dt3 = Cells(3, 1)     ' 单元格内容:2013-1-1 11:55:18

interval=TimeValue(dt3)-TimeValue(dt2)

TimeValue的 值在0-1之间,表示0-24小时,实际上就是当前时间占24小时的比例。 利用这个值可以干很多事,例如,用时间值乘以24再取整就是时间从0点开始的小时值,乘以24*60再取整就是时间从0点开始的分钟值,乘以24*60*60就是时间从0点开始的秒值。再比如,以10分钟作为间隔,一天的间隔数就是144,那么任意一个时间值乘以24*6再取整就得到从0点开始这个间隔的数量。

注意: TimeValue 的数据类型是Single,如果单元格中只输入时间,也是给 Single类型 变量赋值。 例如:

tt = Cells(2, 1)     ' 单元格内容:12:00:00,赋值后tt的值是0.5

我们计算两个时间差,也就是计算两个浮点数之差,比如程序的运行时间,将这个差值乘以24就是时间差以小时为单位, 乘以24*60就是以分为单位, 乘以24*60*60就是以秒为单位。

时间之间的也可以直接相减,但数据类型必须正确,效果和使用 TimeValue函数一样。

4、关于取整

INT(12.56)=12:直接取整数部分,CInt(12.56)=13:小数部分四舍五入;

Ceiling(12.56,1)=13:向上进,只要有小数,整数部分都加1,Ceiling(12.05,1)=13,当然,这个函数功能比较强大,取整只是一个应用;

round(12.56,0)=13:小数部分四舍五入,同样,该函数有两个参数,取整只是一个应用。

5、关于Round函数进行四舍五入

Round函数进行四舍五入并不是逢5就入,例如:round(0.5)=0、 round(1.5)=2 、 round(2.5)=2 、round(3.5)= 4 、round(4.5)=4 ,难到还分奇偶?答案是确实分奇偶,在VBA中Round函数是采用“银行家舍入”,建议大家在VBA中慎重使用Round函数来四舍五入。什么是“银行家舍入”呢,定义如下:

四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一 ”。这个四舍五入法是一个国际标准,大部分的编程软件都使用的是这种方法,据说国际上一般都是用这种方法的。

如果在Excel VBA中进行四舍五入处理,也可以直接调用Excel工作表函数,达到直接四舍五入的目的 Application.Round(A,B)

===============================

附:DateDiff 函数用法

DateDiff (interval, Date1 , Date2[,firstweekofyear[,firstweekofyear]])
返回一个Variant(long) 的值,表示两个指定日期间的时间间隔数目
interval :设定两个日期之间的期间计算之单位。譬如 > interval ="m" 表示计算的单位为月。 > interval 的设定值如:
yyyy > Year 年
q Quarter 季
m Month 月
d Day 日
w Weekday 星期
h Hour 时
n Minute 分

s Second 秒
Date1 ,Date2:计算期间的两个日期表达式,若 >date1 较早,则两个日期之间的期间结果为正值;若 >date2 较早, 则结果为负值。
firstweekofyear :设定每周第一天为星期几, 若未设定表示为星期天。 >FW 的设定值如下:
0 使用 >API 的设定值。
1 星期天
2 星期一
3 星期二
4 星期三
5 星期四
6 星期五
7 星期六
firstweekofyear :设定一年的第一周, 若未设定则表示一月一日那一周为一年的第一周。 >FY 的设定值如下:
0 使用 >API 的设定值。
1 一月一日那一周为一年的第一周
2 至少包括四天的第一周为一年的第一周
3 包括七天的第一周为一年的第一周
示例如下:
计算两个日期的相隔月数.
DiffMonthL = DateDiff("M", DATE_start, DATE_end)
作者:iamlaosong1、日期转换很简单,直接用转换函数就可以了,例如:CDate("2012-12-31")2、日期之间的天数用datediff函数,注意,工作表单元格中用的函数名称是datedif,少了一个f,而且参数顺序也不一样。例如:dt = Cells(2, 1)     ' 单元格内容:2013-1-1 09:35:08dd = DateDiff("D",
计算 日期 时间 差.xlsx源码 EXCEL VBA 宏编程xlsx实例代码下载 计算 日期 时间 差.xlsx源码 EXCEL VBA 宏编程xlsx实例代码下载 计算 日期 时间 差.xlsx源码 EXCEL VBA 宏编程xlsx实例代码下载 计算 日期 时间 差.xlsx源码 EXCEL VBA 宏编程xlsx实例代码下载 1.合个人学习技术做项目参考合个人学习技术做项目参考 2.适合学生做毕业设计项目参考适合学生做毕业设计项目技术参考 3.适合小团队开发项目技术参考适合小团队开发项目技术参考
如果直接以字符串的形式存储,那么不同的格式,不同的语言会让表示方式非常繁琐。 在理解 日期 时间 的表示方式之前,我们先要理解数据的存储和展示。 当我们定义一个整型变量并赋值时: int n = 12 34 00 ; 编译器会把上述字符串(程序源码就是一个字符串)编 通过crontab 命令,我们可以在固定的间隔 时间 执行指定的系统指令或 shell script脚本。 时间 间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。 crontab [-u username]    //省略用户表表示操作当前用户的crontab -e (编辑工作表) -l (列出工作表里的命令) -r (删除工作作) 我们用crontab -e进入当前用户的工作表编辑,是常见的vi
Function GetWorkdayCount(StartDay As Date, EndDay As Date) As Integer Dim NumS As Integer, NumY As Integer Dim WeekdayNumY(7, 6) As Integer WeekdayNumY(1, 1) = 0 WeekdayNumY(1, 2) = 0 WeekdayNumY(1, 3...
v_date = Date ' 今天,格式为:yyyy-MM-dd v_time = Now ' 此时,格式为:yyyy-MM-dd HH:mm:ss v_date2 = #"2021-06-01" '指定 时间 v_date3 = CDate("2021-06-01") 日期 格式化 Format(Date, "yyyy-MM-dd") 日期 处理 对 日期 进行处理,得到想要的目标 日期 today = Date yesterday = today - 1 Dim result As Integer result = 2 + 2 '这里是 计算 的例子,您可以替换为您的 计算 Range("A1").Value = result '将 计算 结果打印到 A1 单元格 End Sub 请注意,这只是一个简单的示例,您需要根据您的具体需求进行修改。