设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12345下一页
返回列表 发新帖
查看: 15141|回复: 49
打印 上一主题 下一主题

[模块/函数] 时间函数汇总

[复制链接]
跳转到指定楼层
1#
发表于 2005-11-12 18:05:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.Cdate(日期表达式)

  将日期表达式转换成日期类型的数据。

  日期表达式是任何可以解释成日期的表达式,包含日期文字,可以看作日期的字符串以及从函数返回的日期。

  比如:myDate = CDate("99-5-20")   ,这样的日期表达式必须加双引号,否则结果不可预料。

  CDate 依据系统上的区域设置来决定日期的格式。如果提供的格式为不可识别的日期设置,则不能正确判断年、月、日的顺序。

2.Now()

  返回当前计算机系统设置的日期和时间。

3.Year(日期表达式)

  返回表示年份的整数。

  比如:Year("00-6-15") = 2000

4.Month(日期表达式)

  返回 1 到 12 之间的整数,表示一年中的某月。

  比如:Month("00-6-15") = 6

5.DateAdd(interval, number, date)

DateAdd 函数语法中有下列命名参数:

部分                     描述

interval   必要。字符串表达式,是所要加上去的时间间隔。

number     必要。数值表达式,是要加上的时间间隔的数目。其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。

date       必要。Variant (Date) 或表示日期的文字,这一日期还加上了时间间隔。

设置 interval 参数具有以下设定值:

设置   描述

yyyy   年

q       季

m       月

y      一年的日数

d       日

w      一周的日数

ww     周

h        时

n       分钟

s       秒

说明

可以使用 DateAdd 函数对日期加上或减去指定的时间间隔。

例如,可以用 DateAdd 来计算距今天为三十天的日期;或者计算距现在为 45 分钟的时间。

为了对 date 加上“日”,可以使用“一年的日数” (“y”),“日” (”d”) 或“一周的日数” (”w”)。

DateAdd 函数将不返回有效日期。在以下实例中将 1 月31 日加上一个月:

DateAdd(m, 1, 31-Jan-95)

上例中,DateAdd 返回 1995 年 2 月 28 日,而不是 1995 年 2 月 31 日。

如果 date 是 1996 年 1 月 31 日,则由于 1996 年是闰年,返回值是 1996 年 2 月 29 日。

如果计算的日期超前 100 年(减去的年度超过 date 中的年份),就会导致错误发生。

如果 number 不是一个 Long 值,则在计算时取最接近的整数值来计算。

注意   DateAdd 返回值的格式由 Control Panel设置决定,而不是由传递到date 参数的格式决定。

事例:

  DateAdd("d",10,"2000-6-18")

结果是: 2000-06-28

  DateAdd("m",-1,"2000-6-18")

结果是: 2000-05-18

6、DateDiff 函数

        返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。

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

DateDiff 函数语法中有下列命名参数:

部分 描述

interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔

Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。

Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。

firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。

interval 参数的设定值同DateAdd函数,请参考上面的例子。

例:DateDiff("d",#2004-01-06#,#2004-01-07#)     1

7、DatePart 函数

        返回一个包含已知日期的指定时间部分的 Variant (Integer)。

语法 DatePart(interval, date[,firstdayofweek[, firstweekofyear]])

DatePart 函数语法中有下列命名参数:

部分 描述

interval 必要。字符串表达式,是要返回的时间间隔。

date 必要。要计算的 Variant (Date) 值。

Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。

firstweekofyear 可选。指定一年第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。

设置

interval 参数的设定值同DateAdd()

DatePart 函数示例本示例先取得一个日期,然后使用 DatePart 函数显示该日期是发生在该年的哪一季。

Dim TheDate As Date    ' 声明变量。

Dim Msg

    T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2005-11-12 19:43:00 | 只看该作者
12、Time 函数

返回一个指明当前系统时间的 Variant (Date)。






语法





Time






示例






使用 Time 函数返回系统当前的时间。




  1. Dim MyTime
复制代码
  1. MyTime = Time    '
复制代码
返回系统当前的时间







说明





为了设置系统时间,请使用 Time 语句。






设置系统时间。






语法





Time = time





必要的 time 参数,可以是任何能够表示时刻的数值表达式字符串表达式或它们的组合。






说明





如果 time 是一字符串,则 Time 会试着根据系统指定的时间,利用时间分隔符将其转换成一个时间。如果无法转换成一个有效的时间,则会导致错误发生。






13、FormatDateTime函数



描述





返回一个日期或时间格式的表达式。






语法





FormatDateTime(Date[,NamedFormat])






FormatDateTime函数语法有如下几部分:






部分      描述






Date   必需的。要被格式化的日期表达式






NamedFormat可选的。数字值,表示日期/时间所使用的格式。如果忽略该值,则使用vbGeneralDate






设置值





NamedFormat参数的设置值如下:






常数     值      描述






vbGeneralDate  0  显示日期和/或时间。如果有日期部分,则用短日期格式显示。如果有时间部分,则用长时间格式显示。如果都有,两部分都显示。






VbLongDate  1  用计算机区域设置值中指定的长日期格式显示日期。






VbShortDate  2  用计算机区域设置值中指定的短日期格式显示日期。






<F
3#
 楼主| 发表于 2005-11-12 19:43:00 | 只看该作者
<RE><H1 auto 0cm?>18、用户自定义日期/时间格式 (Format 函数)下面标识一些可用来创建用户自定义日期/时间格式的字符:字符     说明(:)    时间分隔符。在一些区域,可能用其他符号来当时间分隔符。格式化时间值时,时间分隔符可以分隔时、分、秒。时间分隔符的真正字符在格式输出时取决于系统的设置。(/)    日期分隔符。在一些区域,可能用其他符号来当日期分隔符。格式化日期数值时,日期分隔符可以分隔年、月、日。日期分隔符的真正字符在格式输出时取决于系统设置。 c    以
  1. ddddd
复制代码
来显示日期并且以
  1. ttttt
复制代码
来显示时间。如果想显示的数值无小数部分,则只显示日期部分,如果想显示的数值无整数部分,则只显示时间部分。 d    以没有前导零的数字来显示日 (1–31)。 dd   以有前导零的数字来显示日 (01–31)。 ddd  以简写来表示日 (Sun–Sat) dddd  以全称来表示日 (Sunday–Saturday) ddddd  以完整日期表示法显示(包括年、月、日),日期的显示要依系统的短日期格式设置而定。 dddddd  以完整日期表示法显示日期系列数(包括年、月、日),日期的显示要依系统识别的长日期格式而定。缺省的长日期格式为
  1. mmmm
复制代码
  1. dd, yyyy
复制代码
。 aaaa  与dddd 一样,它只是该字符串的本地化版本。 w  将一周中的日期以数值表示(1 表星期日~ 7表星期六)。 ww  将一年中的星期以数值表示 (1–54)。 m  以没有前导零的数字来显示月 (1–12)。如果
  1. m
复制代码
是直接跟在
  1. h
复制代码
  1. hh
复制代码
之后,那么显示的将是分而不是月。 mm  以有前导零的数字来显示月 (01 – 12)。如果
  1. m
复制代码
是直接跟在
  1. h
复制代码
  1. hh
复制代码
之后,那么显示的将是分而不是月。 mmm  以简写来表示月 (Jan–Dec)。 mmmm  以全称来表示月 (January–December)。 oooo  与mmmm一样,它只是该字符串的本地化版本。 <FONT face=宋体>q  将一年
4#
发表于 2005-11-27 23:10:00 | 只看该作者
[em01][em02][em03][em04][em06][em07][em08][em09][em10][em12][em13]
5#
发表于 2005-12-24 19:29:00 | 只看该作者
名副其实的“汇总”啊,谢谢楼主,收下了。[em17][em01][em17][em01]
6#
 楼主| 发表于 2005-12-26 04:10:00 | 只看该作者
如何将文本型:2003.08.04 转换为日期型:2003-08-04


cdate(replace("2003.08.04",".","-"))


显示当前日期在该年中所处的星期号


=Format(Now(), "ww")


ww 为 1 到 53。


显示日期字段值的四位年份值。


=DatePart("yyyy", [订购日期])





显示日期字段值前 10 天的日期值。


=DateAdd("y", -10, [应付日期])


显示日期字段值前一个月的日期值。


=DateAdd("m",-1,Date())


显示日期1和日期2之间相差的天数。


=DateDiff("d", [订购日期], [发货日期])





从今天算起到三个月后的日期之间的记录。


Betweeb date() and adddate(3,date())


根据出生日期计算年龄(周岁)


=IIf(Month(Date())-Month([出生年月日])>-1,Year(Date())-Year([出生年月日]),Year(Date())-Year([出生年月日])-1)


日期函数示例


当天日期:=Date()


当日:=Day(date)


当月:=Month(date())


当年:=Year(date())


当季:=DatePart("q",Date())





算出每个月的天数


一法:


Dim a, b, c


a = Year(Now())


b = Month(Now())


c = Format((a & "/" & b + 1 & "/1"), "######") - Format((a & "/" & b & "/1"), "######")


二法:


DateDiff("d", Format(Date, "yyyy-mm-01"), Format(DateAdd("m", -1, Date), "yyyy-mm-01"))


DateDiff可以算出两个日期之间相差几天!


三法:


Day(DateAdd("d", -1, Format(Date, "yyyy-mm-01")))


day函数可以知道某个日期是这个月的第几天,我们把这个月的最后一天拿出来DAY一下!


应该还有更好的方法!


比如说可以定义一个数组,把每个月的日子放进去,或者说写一个函数算每一个月的天数


只要考虑一下闺年的问题就可以了!





如何得到某年每个月的第一天是星期几


Private Sub Command1_Click()
Dim i As Integer, A As Integer, B As Integer, C As String
A = InputBox("请输入年份", "某年每个月的第一天是星期几")
Form1.Cls
For i = 1 To 12
C = A & "-" & i & "-1"
B = Weekday(C)
Select Case B
Case vbSunday
Print A & "年" & i & "月1日是 星期日"
Case vbMonday
Print A & "年" & i & "月1日是 星期一"
Case vbTuesday
Print A & "年" & i & "月1日是 星期二"
Case vbWednesday
Print A &a
7#
发表于 2005-12-28 17:58:00 | 只看该作者
谢谢分享,Very good!!!!
8#
发表于 2006-1-1 07:31:00 | 只看该作者
很好,收藏!
9#
发表于 2006-1-6 01:32:00 | 只看该作者
很好,收藏!谢谢!
10#
发表于 2006-1-14 01:47:00 | 只看该作者
太感谢一点通版主了![em01]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-26 02:56 , Processed in 0.109294 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表