如果有用到AddDate的,有三條建議:
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)濱城免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
不要用AddDate對月進行加減操作
不要用AddDate對月進行加減操作
不要用AddDate對月進行加減操作
有一個需求需要對傳入的時間減去一個月,拿到上一個月的年月(如:2006-01),再進行操作。
那么就: str := date.AddDate(0,-1,0).Format("2006-01") 很完美的樣子。
2018-05-30 加一個月變成了2018-07-01。
看一下官方文檔:
AddDate會將結(jié)果規(guī)范化,類似Date函數(shù)的做法。因此,舉個例子,給時間點October 31添加一個月,會生成時間點December 1。(從時間點November 31規(guī)范化而來)
所以當你給month加 1,day 是不會變的。5-31變成 6-31,最后轉(zhuǎn)化為 7-1。
所以大家在用任何官方、非官方的接口,都一定要仔細閱讀接口文檔呀,不然很容易出問題。
一定要慎用AddDate,尤其是對年和月直接進行加減操作的。
選擇單元格區(qū)域中的一列日期或時間,或者確?;顒訂卧裨诎掌诨驎r間的表列中。
選擇單元格區(qū)域或表中的一列日期或時間。
在“開始”選項卡上的“編輯”組中,單擊“排序和篩選”,然后執(zhí)行下列操作之一:
若要按從早到晚的順序?qū)θ掌诨驎r間排序,請單擊“從最舊到最新排序”。
若要按從晚到早的順序?qū)θ掌诨驎r間排序,請單擊“從最新到最舊排序”。
問題:檢查日期和時間是否存儲為日期或時間 如果結(jié)果不是您所希望的,可能是因為該列中包含存儲為文本(而不是日期或時間)的日期或時間。要使 Excel 正確地對日期和時間進行排序,該列中的所有日期和時間都必須存儲為日期或時間系列數(shù)值。如果 Excel 無法將值識別為日期或時間值,就會將該日期或時間存儲為文本。有關(guān)詳細信息,請參閱將存儲為文本的日期轉(zhuǎn)換為日期。
注釋 如果要按星期日期進行排序,請設(shè)置單元格格式以顯示星期日期。如果要按星期日期進行排序,而不考慮日期,請使用 TEXT 函數(shù)將它們轉(zhuǎn)換為文本。但是,TEXT 函數(shù)會返回一個文本值,因此排序操作將基于字母數(shù)字數(shù)據(jù)。有關(guān)詳細信息,請參閱按星期日期顯示日期。
1.可以用DateDiff函數(shù),返回值表示兩個指定日期間的時間間隔。
2.也可以把兩個日期直接相減:
a = Now - CDate("2014-1-1") '2014年1月1日到今天,共這么多天。
b = CDate("2014-3-1") - CDate("2014-1-1") '2014年1月1日到2014年3月1日,共這么多天。
vb的函數(shù)是強大的,閏年和平年它自己會處理,無需擔心。
追問:
那需要什么控件,能詳細說一下嗎
回答:
不需要任何控件呢,是系統(tǒng)自帶的函數(shù)呢,你寫到代碼里面試試就可以了。
你稍等,我給你寫代碼:
'窗體弄一個按鈕Command1,加入以下代碼,你試試看:
Private Sub Command1_Click()
Dim a As Long
Dim b As Long
a = Now - CDate("2014-1-1")'2014年1月1日到今天,共這么多天。
b = CDate("2014-3-1") - CDate("2014-1-1")'2014年1月1日到2014年3月1日,共這么多天。
Print "2014年1月1日到今天,共" a "天。"
Print "2014年1月1日到2014年3月1日,共" b "天。"
End Sub