日付時刻 VBやVBAで使用するDate関数やTime関数をUNIX(ユニックス)タイムにする

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Option Explicit


Function UnixDateConversion(dblDate As DoubleAs Date
'**************************************************************
'ユニックスタイムをVBやVBAで使用するDate関数やTime関数にする
'**************************************************************
'"yyyy/mm/dd hh:mm:ss"の書式で表される値を返します。
    UnixDateConversion = ((dblDate + 32400) / 86400) + 25569
    '解説は下test2
End Function


Function DateUnixConversion(dblDate As DateAs Double
'**************************************************************
'VBやVBAで使用するDate関数やTime関数をユニックスタイムにする
'**************************************************************
'UNIX形式に変換(UNIXタイムスタンプ)
    DateUnixConversion = DateDiff("s", "1970/01/01 00:00:00", dblDate) - 32400
    '解説は下test2
End Function


Private Sub test()
    MsgBox UnixDateConversion("1260751469")
End Sub


Private Sub test1()
    MsgBox DateUnixConversion("2009/12/14 09:44:29")
End Sub


Private Sub test2()
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
'求め方
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
'①ユニックスタイム
'   Unix time 1970/01/01 00:00:00 からの通算秒数
'②VBやVBAで使用するDate関数やTime関数
    Debug.Print Format(CDate(0), "yyyy/mm/dd hh:nn:ss")
    'A 1899/12/30 00:00:00
'③それぞれの日数差を求めます。【DateDiff 関数】
    Debug.Print DateDiff("d", "1970/01/01 00:00:00", "1899/12/30 00:00:00")
    Debug.Print CLng(CDate("1970/01/01 00:00:00"))
    'A -25569 (日)
'④時差は9時間これを秒数にする。
'    a = 9 * 60 * 60
    'A 32400 (秒)
'⑤1日(24時間)の秒数を求めます。
'    a = 24 * 60 * 60
    'A 86400 (秒)

'【VBやVBAで使用するDate関数やTime関数をユニックスタイムにする式は】
    '例"2009/12/14 09:44:29"の場合
    Dim i As Date
    i = "2009/12/14 09:44:29"

    MsgBox DateDiff("s", "1970/01/01 00:00:00", i) - 32400
    'A 1260751469 になる

'【ユニックスタイムをVBやVBAで使用するDate関数やTime関数にする式は】
    Dim j As Double
    j = 1260751469

    MsgBox CDate(((j + 32400) / 86400) + 25569)
    'A "2009/12/14 09:44:29" になる

End Sub


Private Sub test3()
'============================================================
'【DateDiff 関数】
'============================================================
'2 つの指定した日付の時間間隔を表す値を返します。
MsgBox DateDiff("m", "2008/12/12", "2009/12/12")
'~~~~~~~~~~~~~~~~①~~~~~~~②~~~~~~~~~~~~③~~~~

'①下記の「文字列式」より選択
'②基準になる日時を指定(起算値)
'③算出の対象となる日時
MsgBox DateDiff("m", "2009/12/12", "2008/12/12")
'マイナスの場合は過去になる

'============================================================
'【DateAdd 関数】
'============================================================
'指定された時間間隔を加算した日付を返します。
MsgBox DateAdd("m", 1, Date)
'~~~~~~~~~~~~~~~①~~②~~③~~~~

'①下記の「文字列式」より選択
'②、①に対して将来の日時を求める場合正の値(+)、過去の場合は負の値(-)
'③基準になる日時を指定

'============================================================
'【DatePart 関数】
'============================================================
'日付の指定した部分を含む値を返します。
MsgBox DatePart("h", Now)
'~~~~~~~~~~~~~~~~①~~②~~
'①下記の「文字列式」より選択
'②基準になる日時を指定
MsgBox Format(Now, "h")
'でも同じ値が求められます。

'============================================================

'************
'* 文字列式
'************
'-----------------------------------
'   設定値 内容
'-----------------------------------
'   yyyy    年
'   q       四半期
'   m       月
'   y       年間通算日
'   d       日
'   w       週日
'   ww      週
'   h       時
'   n       分
'   s       秒

End Sub

 

 

 

2000年01月01日|[VBサンプルコード]:[日付時刻]