ウィザードボタン - カスタム機能の時間()、日時()、差分()

機能1:差分(パラメータ1、パラメータ2、パラメータ3)
パラメータ1:時間間隔。(D日数/ h時間/ M分/ S秒)
パラメータ2:開始時刻。
パラメータ3:終了時刻。
戻り値:数値。
機能2:DTIME(パラメータ)
パラメータ:固定フォーマットの日付時間
戻り値:として日付と時刻を指定した秒数に1970/1/1/0/0/0
追加(1パラメータ、パラメータ2、パラメータ3):3の機能
パラメータ1:時間間隔。
パラメータ2:時間数(年、月はマイナスをサポートしていません)。
3つのパラメータ:開始時刻。
戻り値:添加量指定した時間間隔
機能4:ddate(パラメータ)
パラメータ:秒数
戻り値:日付時刻固定フォーマット。
以下は、ソースコードである

「指定された日付と時刻の追加
機能を追加する(JG、SL、日時)
薄暗いD、Y、N末端、C、RQ
RQ =スプリット(日時、 "/")
SELECTケースLCASE(JG)
ケース"S"
D = SL
ケース"M"
D 60 = SL *
ケース"H"
D = 60 * 60 * SL
ケース"D"
D = SL * 60 * 60 * 24
ケース"N-"
Y = INT(RQ(0)):N = INT(RQ(1)):D = 0
一方SL> 12
であれば、N <= 2
であれば(Y / 4 = INT(Y / 4)とy / 100 <> INT(Y / 100))または(Y / 400 = INT(Y / 400)とy / 100 = INT(Y / 100)) 
、D = D + 366 * 24 * 60 * 60
さもなければ
、D = D + 365 * 24 * 60 * 60
END IF
ELSEIF N> 2
((Y + 1)/ 4 = INT((Y + 1)/ 4)の場合と(Y + 1)/ 100 <> INT((Y + 1)/ 100) )または((Y + 1)/ 400 = INT((Y + 1)/ 400)および(Y + 1)/ 100 = INT((Y + 1)/ 100)) 
、D = D + 366 * 24 * 60 * 60
さもなければ
、D = D + 365 * 24 * 60 * 60
END IF
END IF
SL = SL-12
、Y = Y + 1
Wendの
iはSL + 1 = 1のため
N = 1またはn = 3又はn = 5の場合はN = 7又はn = 8又はN = 10又はN = 12
、C = 31
ELSEIF N = 4又はN = 6又はn = 9またはN = 11
、C = 30
ELSEIF N = 2
もし(Y / 4 = INT(Y / 4)とy / 100 <> INT(Y / 100))または(Y / 400 = INT(Y / 400)とy / 100 = INT(Y / 100)) 
、C = 29
他の
C = 28
END IF
END IF
どうか<= SL
D = D + C * 24 * 60 * 60
END IF
であれば、N = 12
、N = 1
、Y = Y + 1つの

N = N + 1
END IF
次の
場合INT(RQ(2))> C
D = D-(INT(RQ(2)) - C)* 24 * 60 * 60
END IF
場合"Y"
Y = INT(RQ(0)):N = INT( RQ(1)):D = 0
SLのため 
であれば、N <= 2
であれば(Y / 4 = INT(Y / 4)とy / 100 <> INT(Y / 100))または(Y / 400 = INT(Y / 400)及びy / 100 = INT(Y / 100)) 
、D = D + 366 * 24 * 60 * 60
さもなければ
、D = D + 365 * 24 * 60 * 60
END IF
ELSEIF N> 2
IF((Y + 1)/ 4 = INT((Y + 1)/ 4)、(Y + 1)/ 100 <> INT((Y + 1)/ 100))または((1つの+ Y)/ 400 = INT((Y + 1)/ 400)及び(1 + Y)/ 100 = INT((Y + 1)/ 100)) 
、D = D + 366 * 24 * 60 * 60
さもなければ
、D = D + 365 * 24 * 60 * 60
END IF
END IF
Y = Y + 1

エンド選択
= ddate(INT(DTIME(日時))+ D)を追加
エンド関数

「两个时间差距
関数差分(JG、dtime1、dtime2)
を選択した場合のLCASEを( JG)
場合、 "S"
のdiff = DTIME(dtime2)-dtime(dtime1)
場合は"M"
のdiff =(DTIME(dtime2)-dtime(dtime1))/ 60
の場合"H"
のdiff =(DTIME(dtime2)-dtime( dtime1))/ 60/60
場合"D"
のdiff =(DTIME(dtime2)-dtime(dtime1))/ 60/60/24
端セレクト
端関数

'秒単位の変換時間
関数DTIME(日時)
DIM C、D
日時=スプリット(日時、 "/")
日時へのI = 0(0)-1970-1
IF((1970 + I)/ 4 = INT((1970 + I)/ 4)及び(1970 + I)/ 100 <> INT((1970 + I)/ 100))または((1970 + I)/ 100 = INT((1970 + I)/ 100)および(1970 + I)/ 400 = INT((1970 + I)/ 400))
C = C + 1
END IF

D =(日時(0)-1970)* 365 * 24 * 60 * 60 + C * 24 * 60 * 60 +日時( 3)* 60 * 60 +日時(4)* 60 +日時(5)
INT(日時(1中))> 1
日時(1)=日時(1)-1
日時(1)は、1または日時(= 1の場合)3または日時(1)= 5または日時(1)= 7または日時(1)= 8または日時(1)= 10または日時(1)= 12 =
C = 31
ELSEIF日時(1)= 4または日時(1)= 6または日時(1)= 9または日時(1)= 11
、C = 30
日時(1)= 2、(日時(0)/ 4 = INT(日時(0)/ 4)と日時(0)/ 100 <> INT(日時(0)/ 100))または(日時(0)ELSEIF / 400 = INT(日時(0)/ 400)と日時(0)/ 100 = INT(日時(0)/ 100))
、C = 29
他の
C = 28
END IF
日時(2)=日時(2)+ C
WEND
日時(2)=日時(2)-1
DTIME = D +日時(2)* 24 * 60 * 60-8 * 60 * 60
エンド関数

「秒转换日期时间
関数ddate(時間)
DIM Y、D、H 、M、S、C、N
C = 0
時間= INT(時間)+ 8 * 60 * 60
、Y = INT(時間/(365 * 24 * 60 * 60))
iはintに= 0の場合(Y)-1
IF((1970 + I)/ 4 = INT((1970 I +)/ 4)、(1970 + I)+ I)/ 100)/ 100 <> INT((1970)または((1970 + I)/ 100 = INT((1970 + I)/ 100)および(1970 + I)/ 400 = INT((1970 + I)/ 400))
C = C + 1つの
END IF

Y = Y-INT(C / 365):C = 0
iは、INT(y)に0 = -1ため
((1970 + I)/ 4 = INT((1970 + i)が/ 4)の場合と(1970+ I)/ 100 <> INT((1970 + I)/ 100))または((1970 + I)/ 100 = INT((1970 + I)/ 100)および(1970 + I)/ 400 = INT((1970 + I)/ 400))
C = C + 1
END IF
次の
C = 60 * 60 * 24 * C
D = INT((時間C-60 * 60 * 24 * 365 * INT(Y))/ 60/60 / 24)
H = INT((時間C-60 * 60 * 24 * 365 * INT(Y)-int(D)* 24 * 60 * 60)/ 60/60)
、M = INT((時間-C- 60 * 60 * 24 * 365 * INT(Y)-int(D)* 24 * 60 * 60-INT(H)* 60 * 60)/ 60)
S =(時間C-60 * 60 * 24 * 365 * INT(Y)-int(D)* 24 * 60 * 60-INT(H)* 60 * 60-INT(M)* 60)
C = 31:N = 1
一方、D> = C
D = DC
N = N + 1
、N = 1またはn = 3又はn = 5又はN = 7又はn = 8又はN = 10又はN = 12であれば
C = 31
ELSEIF N = 4又はN = 6またはN = 9又はn = 11
C = 30
ELSEIF N = 2及び((1970 + Y)/ 4 = INT((1970 + Y)/ 4)、(1970 + Y)/ 100 <> INT((1970 + Y)/ 100))または((1970+ Y)/ 100 = INT((1970 + Y)/ 100)および(1970 + Y)/ 400 = INT((1970 + Y)/ 400))
、C = 29
他の
C = 28
END IF
とWEND
D = D + 1
N =文字列(2-lenは(N)、 "0")&N
D =文字列(2-lenの(d)に示すように、 "0")&D
H =文字列(2-lenを(H)、 "0")&H
M =ストリング(2-lenを(M)、 "0")&M
S =文字列(2-lenを(S)、 "0")&S
ddate = INT(Y + 1970)& "/" &N& "/" &D& "/" &H& "/" &M& "/" &S
エンド機能

公開された28元の記事 ウォンの賞賛3 ビュー10000 +

おすすめ

転載: blog.csdn.net/biao197/article/details/101313954