日付時刻 VBやVBAで使用するDate関数やTime関数をUNIX(ユニックス)タイムにする
※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。
※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。
Function UnixDateConversion(dblDate As Double) As Date '************************************************************** 'ユニックスタイムをVBやVBAで使用するDate関数やTime関数にする '************************************************************** '"yyyy/mm/dd hh:mm:ss"の書式で表される値を返します。 UnixDateConversion = ((dblDate + 32400) / 86400) + 25569 '解説は下test2 End Function Function DateUnixConversion(dblDate As Date) As 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 |