none
UnixTimeの変換について RRS feed

  • 質問

  • お世話になっております。

    UnixTimeの変換についてご教示ください。

    UnixTime(1542269136)(2018/11/15 17:05:36)を

    UTCとの時差を0時間のUnixTimeを求めたいのですが

    どのように求めればよろしいでしょうか。

    結果としては「1542301536」が求めたいです。

    言語はC++です。

    よろしくお願い致します。

    2019年6月16日 5:24

回答

  • UTCのstruct tmからUNIX TIMEに変換する標準ライブラリは存在しなさそうですね。

    glibcなどにはtimegm関数、Windowsには_mkgmtime関数が存在しているようです。

    2019年6月16日 6:57

すべての返信

  • UNIX timeは一般に

    UNIX timeとはコンピューターシステム上での時刻表現の一種。UNIXエポック、すなわち協定世界時 (UTC) での1970年1月1日午前0時0分0秒から形式的な経過秒数として表される。

    という定義で、UTCとの時差は0時間が前提となります。質問者さんのいうUnixTimeとは何を指すのでしょうか? 何か間違った処理をしていませんか?

    2019年6月16日 6:16
  • すみません。

    言葉が足りませんでした。

    UnixTime:1542301536を

    gmtime_sで変換して日付表示を行っています。

    変換して行った日付が

    2018/11/15 17:05:36

    この日付を

    UnixTime:1542301536

    に戻したいのですが、可能でしょうか。

    よろしくお願い致します。

    2019年6月16日 6:37
  • UTCのstruct tmからUNIX TIMEに変換する標準ライブラリは存在しなさそうですね。

    glibcなどにはtimegm関数、Windowsには_mkgmtime関数が存在しているようです。

    2019年6月16日 6:57
  • 返信、ありがとうございます。

    _mkgmtime関数を試してみます。

    2019年6月16日 8:20
  • 解決済みになっていますがそもそもの考え方が間違っているように思います。

    1542269136は2018/11/15 17:05:36(JST)および2018/11/15  8:05:36(UTC)を指しますし、
    1542301536は2018/11/16  2:05:36(JST)および2018/11/15 17:05:36(UTC)を指します。

    1542269136に対して、localtime_sを使用することでJSTとして分解したstruct tmが得られ、gmtime_sを使用することでUTC(GMT)として分解したstruct tmが得られます。1542269136を1542301536へ変換するという考え方を改めるべきです。

    2019年6月16日 10:01