質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

解決済

2回答

10950閲覧

VBA で日付をUTC日時に変換する方法

teraemon

総合スコア14

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2017/06/14 01:18

VBA で日付(yyyy/mm/dd)をUTC日時に変換する方法でCreateObjectを使わない方法を教えて頂けないでしょうか。

下記のサイトを参考にCreate Objectで実装した所、端末によってはエラーが出るためです。

http://vba-geek.jp/blog-entry-310.html

変換例
2017/06/01 → 20170601000000.000000+540

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2017/06/14 09:23

「UTC日時」という言葉の使い方を間違っています。
guest

回答2

0

1) まず最初に

20170601000000.000000+540

のように、UTCとの時差("+540"の部分:540分(9時間)UTよりも進んで(+)いる事を示す)がついているのは、UTではないローカル時間を表現する方法です。
質問に書かれている変換例は、UTCへ変換ではなく、JSTの表記例でしかありません。

2) UTC日時に変換するということは時間も考慮するという事だと思われますが、2017/06/01 のように時間が判らない (2017/06/01 0:00~2017/06/01 23:59の範囲であることしか判らない)ところを起点にしたのでは、日時を確定できません。
2017/06/01 12:34:00 (JST)のように、起点を特定することが必須です。

==
以下、2017/06/01 12:34:00 (JST)からUTC日時("yyyy/mm/dd hh:nn:ss"形式)を得る場合を例として、回答します。

上に書いたようにJSTはUTCより9時間進んでいますから、9時間戻せばUTCになります。
VBAのコードにすれば、以下のような感じです。

VBA

1' JSTの時刻(文字列)をUTC(Date)に変換する関数jst2utcの使用例 2Sub UTCに変換して表示() 3 Dim nowStr As String, utcStr As String, utDate As Date 4 5 nowStr = "2017/06/01 12:34:00" 'JSTの日時(サンプル) 6 7 utDate = jst2utc(nowStr) 'UTCに変換する関数(下に定義してあります) 8 9 utcStr = Format(utDate, "") 'UTCを文字列に変換 10 11 MsgBox (nowStr & "をUTCに変換すると, " & utcStr & "になります") 12End Sub 13 14' JSTの日時(文字列)を、UTC(Date型)に変換する関数 15Function jst2utc(jstString As String) As Date 16 Dim jstDate As Date, utDate As Date 17 18 jstDate = CDate(jstString) '日付を表す文字列を、日時(Date型)に変換する 19 utDate = jstDate - TimeSerial(9, 0, 0) ' シリアル値で表現した9時間を差し引く(時間を9時間戻してUTCにする) 20 21 jst2utc = utDate 'UTCを返す 22End Function

投稿2017/06/14 07:18

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

UTC日時のフォーマットについての詳細はわかりませセんが、例示の変換なら、下記のような式で可能かと。

Function GetUTCDate(StartDate As Date) GetUTCDate = Format(StartDate, "yyyymmddhhnnss") & ".000000+540" End Function

追記

そもそも、質問の「日付((JST)をUTC日時へ変換」という内容と、変換例が矛盾してますね。
変換例は、日付(JST)を特定のフォーマットに変換するものです。

質問内容に合致している回答は、coco_bauerさんの方で、変換例に合致しているが私の回答ということです。

Windowsにそのような変換をするコマンドが用意されているということは、どこかでそのようなフォーマットが使われているということですね。調べてるみるとどうやらイベントログで使われているようです。
イベント ログからの 1 日分のイベントの取得

投稿2017/06/14 01:52

編集2017/06/16 01:51
hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問