web-dev-qa-db-ja.com

LibreOffice Calcでエポック時間を人間が読める形式に変換する

セルH2にエポックタイムがあり、値は1517335200000です。私はそれをGMTで30/01/2018 6:00:00 PMを返す人間が読める形式に変換しようとしています。

OpenOfficeフォーラムから入手した式H2/86400+25569で変換しようとしました。式は値17587319を返します。 LibreOffice Calcの数値形式をDateに変更すると、06/09/-15484の値が返されます。それは私が望む価値ではありません。では、dd/mm/yyyy hh:mm:ss形式の形式で値を取得するにはどうすればよいですか?

8
Fazle Rabbi

H2に変換する数値が含まれている場合(1517335200000)。

  1. H3に式を含める:

    = H2/1000 /(60 * 60 * 24)+ 25569

    これは43130.75の数を返します。

  2. セルH3の形式を日付に変更します。どちらか:

    • 押す ShiftCtrl
    • Format-> Number Format-> Dateを選択します
    • 選択形式-> セル(ウィンドウが開きます)-> 数値-日付-形式
  3. H3セルの形式を必要な日付形式に変更します。

    • 選択形式-> セル(パネルが開きます)-> 数値-日付-フォーマット(1つ選択)
  4. 希望のフォーマットを表示するのに十分な幅がない場合は、セルの幅を広げます(ヒント:3つの#が表示されます)。


なぜ:

エポック時間は1970年1月1日からの秒数です。
Calcの内部時間は1899年12月30日からの日数です。
したがって、H3で正しい結果を得るには:

  1. 正しい数値(最後の式)を取得します。

    H3 = H2/(60*60*24) + ( Difference to 1/1/1970 since 12/30/1899 in days )
    H3 = H2/86400      + ( DATE (1970,1,1) - DATE(1899,12,30) )
    H3 = H2/86400      +   25569
    

    しかし、あなたが与えているエポック値は大きすぎます。それは必要以上に3つのゼロです。 1517335200000ではなく1517335200である必要があります。ミリ秒単位で指定されているようです。したがって、1000で除算します。この変更により、式は次のようになります。

    H3 = H2/1000/86400+25569  =  43130.75
    
  2. H3の形式を日付と時刻に変更すると(形式->セル->数値->日付->日付と時刻)、次のようになります。

    01/30/2018 18:00:00
    

    h3で。


もちろん、Unixエポック時間は常にUTC(+0子午線)に基づいているため、上記の結果は、ローカルタイムゾーンがUTCから離れている時間だけシフトする必要があります。したがって、現地時間を取得するには、タイムゾーンが太平洋標準時GMT-8の場合、(-8)時間を追加する必要があります。 H4のローカルタイムゾーン(-8)を使用したH3の式は次のようになります。

H3 = H2/1000/86400 + 25569 + H4/24 = 43130.416666

そして、次のように提示されます。

01/30/2018 10:00:00

h3の形式がそのような時刻形式に設定されている場合。

12
Isaac

LibreOfficeの場合:

  • セルA1 = 1564336800 // UNIXタイムスタンプ
  • セルA2 = A1/86400 + 25569
  • セルA2->メインメニュー:形式->日付-> yyyy-MM-dd hh:mm:ss
  • セルA2:2019-07-28 18:00:00

LibreaOffise 1899-12-01およびUTC 1970-01-01の開始日とは異なるためです。私はここに式を見つけました: https://forum.openoffice.org/en/forum/viewtopic.php?f=13&t=606#p290884

0
Grigory K