VB中的時間處理問題
http://www.cnblogs.com/mitang/archive/2010/10/19/1855239.html
1-----------定義日期
dim dat as date
dat=#10:10:10#
dat=#2012/12/12 10:10:10#
2----------日期組合
dat = DateSerial(1999, 5, 23) + TimeSerial(11, 45, 34)
dat= DateValue(“1999/ 5/ 23”) + TimeValue(“11: 45: 34”)
3-----------日期相加
DateAdd(interval, number, date)
4-------------日期相減
datadiff("n",#10:10:10#,#11:11:11#)
函數名
函數功能
語法結構
DATE 函數
返回包含系統(tǒng)日期的VARIANT(DATE) 。
DATE
DATEADD函數
返回包含一個日期的VARIANT(DATE) ,這個日期還加上了一段時間間隔。
DateAdd(interval,number,date)
DateDiff函數
返回Variant(Long)的值,表示兩個指定日期間的時間間隔數目。
DateDiff (interval,date1,date2,firstdayofweek [,firstweekofyear])
DatePart函數
返回一個包含已知日期的指定時間部分的Variant(Integer)
DatePart(interval,date[,firstdayofweek][,firstweekofyear ] )
DateSerial函數
返回包含指定的年月日的Variant(Date)
DateSerial( year ,month ,day )
DateValue函數
返回一個Variant(Date)
DateValue(Date)
Day函數
返回一個Variant(Integer) ,其值為1到31之間的整數,表示一個月中的某一日
Day(Date)
Hour函數
返回一個Variant(Integer) ,其值為0到23之間的整數,表示一天之中的某一個鐘點
Hour(time)
Minute函數
返回一個Variant(Integer) ,其值為0到59之間的整數,表示一個小時中的某一分鐘
Minute(time
Now函數
返回一個Variant(Date) ,根據計算機系統(tǒng)設置的日期和時間來指定日期和時間
Now
Second函數
返回一個Variant(Integer) ,其值為0到59之間的整數,表示一分鐘之內的某一秒鐘
Second(time)
Time函數
返回一個指明當前系統(tǒng)時間的Variant(Date)
Time
Time語句
設置系統(tǒng)時間
Time = time
Timer函數
返回一個Single,代表從午夜開始到現(xiàn)在所經過的秒數
Timer
TimeSerial函數
數 返回一個Variant(Date) ,包含具有現(xiàn)在時、分、秒的時間。
TimeSerial(hour,minute,second)
TimeValue函數
返回一個包含時間的Variant(Date)
TimeValue(time)
Weekday函數
返回一個Variant(Integer) ,包含一個整數,代表某個日期是星期幾
Weekday(date[,firstdayofweek])
Year函數
返回一個Variant(Integer) ,包含表示年份的整數
Year(Date)
編程中常常會與時間打交道,VB編程自然也不例外。以下就談談我在這方面的一點經驗。 VB中提供了很多變量類型,DATE型就是專門用了存儲時間的。 1、DATE型變量及其相關函數。 在內部,一個Date占8個字節(jié)的內存,你可以方便地用它來存儲日期和時間。給Date變量賦值是很容易的。但請保證輸入順序與系統(tǒng)默認的時間表示順序相同。例如: Dim d As Date d = #5/23/99 11:45:34 AM# DateSerial函數可以把年、月、日的數字組合成一個Date值。 TimeSerial函數可把小時、分、秒的數字組合成一個Date值。
且兩函數可以疊加。
d = DateSerial(1999, 5, 23) + TimeSerial(11, 45, 34)
而DateValue 和TimeValue 函數則可將代表日期和時間的字符串轉化為Date型,并且也可以疊加。
d = DateValue(“1999/ 5/ 23”) + TimeValue(“11: 45: 34”)
Format函數可按預定的格式顯示或打印一個Date變量。如:
Print Format(d, “general date”) `99-5-23 11:45:34
Print Format(d, “l(fā)ong date”) `1999年5月23日
Print Format(d, “medium date”) `99-05-23
Print Format(d, “short date”) `99-5-23
Print Format(d, “l(fā)ong time”) `11:45:34
Print Format(d, “medium time”) `11:45 AM
Print Format(d,“short time”) `11:45
Format函數也允許你自己規(guī)定顯示格式。如:
Print Format(d, “mmmm”) `may 產生日期中月份的英文
以以上日期為例,如想顯示其中的一部分信息可使用以下函數:
Print Month(d) `5
Print Day(d) `23
Print Year(d) `1999
Print Hour(d) `11
Print Minute(d) `45
Print Second(d) `34
Print WeekDay(d)`1
Weekday 提供了一組內部常量,vbSunday代表1,直到 vbSaturday代表7。
Now 函數可返回今天的日期及時間。如:
Private Sub Form_Click()
Dim d As Date
d = Now
Print d
End Sub
靈活地應用以上的函數,可以大大地簡化你的程序。例如想計算10000秒
等于幾小時幾分幾秒可寫為:
Private Sub Form_Click()
Dim d As Date
d = TimeSerial(0, 0, 10000)
Print d
End Sub
結果為2:46:40。
2、與時間相關的常用控件。
Timer控件是一個奇特的控件。Timer 控件會在固定時間間隔中運行Timer事件。
此間隔是由Interval屬性決定的,其單位為千分之一秒。但不要以為將其值設為0
事件就可不間斷地運行了。結果恰恰相反,事件將一次也不運行。同時還要注意變
量的聲明。如:
Private Sub Timer1_Timer()
Dim a As Integer
a = a + 1
Print a
End Sub
Dim a As Integer
Private Sub Timer1_Timer()
a = a + 1
Print a
End Sub
試試看,其結果是完全不同的。
當需要用戶輸入時間時,為避免出現(xiàn)錯誤的時間,可以使用日歷控件。它只允許
用戶在日歷表中選擇日期,避免了錯誤的發(fā)生。
3、記錄時間的API函數。
GetTickCount Windows API函數可返回 Windows 啟動以來消失的毫秒數。其精度
高于VB的Timer 函數。且Timer 函數會在午夜清零,而GetTickCount 函數只有當機器
連續(xù)使用49.7天后才返回零。這為我們編程提供了很大的方便。例如想知道你的電腦
連續(xù)工作多久了,可新建一工程,然后添加以下代碼:
Private Declare Function GetTickCount Lib “kernel32" () As Long
Private Sub Form_Load()
Dim d As Date
Dim t As Integer
Form1.Show
t = GetTickCount \ 1000
d = TimeSerial(0, 0, t)
Print d
End Sub
-------------------------------------------------------
CDate()函數將得到地時間字符串進行轉換為date類型地值,然后在插入到數據庫中,開端在一臺電腦上運行并沒有錯。轉換的結果與電腦中時間的格式設置有關
系統(tǒng)設置相關開端——〉設置——〉掌握面板——〉區(qū)域和語言選項——〉區(qū)域選項——〉自定義——〉時間(日期)
可用進行二次轉換:format(cdate(),"YYYY-MM-DDHH:MM:SS")
\
1.Cdate(日期表達式)
將日期表達式轉換成日期類型的數據。
日期表達式是任何可以解釋成日期的表達式,包含日期文字,可以看作日期的字符串以及從函數返回的日期。
比如:myDate = CDate("99-5-20") ,這樣的日期表達式必須加雙引號,否則結果不可預料。
CDate 依據系統(tǒng)上的區(qū)域設置來決定日期的格式。如果提供的格式為不可識別的日期設置,則不能正確判斷年、月、日的順序。
2.Now()
返回當前計算機系統(tǒng)設置的日期和時間。
3.Year(日期表達式)
返回表示年份的整數。
比如:Year("00-6-15") = 2000
4.Month(日期表達式)
返回 1 到 12 之間的整數,表示一年中的某月。
比如:Month("00-6-15") = 6
5.DateAdd(interval, number, date)
返回一個日期,這一日期加上了一段時間間隔??梢杂?nbsp;DateAdd 來計算距今天為三十天的日期;或者計算距現(xiàn)在為 45 分鐘的時間。
DataAdd 函數參數 參數 說明
interval 字符串表達式,是所要加上去的時間間隔的單位。
number 數值表達式,是要加上的時間間隔的數目。其數值可以為正數(得到未來的日期),也可以為負數(得到過去的日期)。
date 日期表達式,這一日期還加上了時間間隔。
interval 參數設定值 值 說明
yyyy 年
q 季
m 月
y 一年的日數
d 日
w 一周的日數
ww 周
h 時
n 分鐘
s 秒
比如:
DateAdd("d",10,"2000-6-18") = 2000-06-28
DateAdd("m",-1,"2000-6-18") = 2000-05-18
==========================DateDiff 函數解釋==========================
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 包括七天的第一周為一年的第一周