koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

Azure Logic Apps で epoch秒を得る

2020/03/09 追記: 今年はうるう年です。雰囲気1日ずれそうな手法を書いていました。ごめんなさい。ダメージを一番受けたのは多分僕です。多分これで大丈夫です。

sub(div(ticks(utcNow()), 10000000), 62135596800)

元はちょっとわかりにくいので避けていたのだけれど、1970年分のシリアル値を減算する。

f:id:koudenpa:20200310010355p:plain

LogicAppsのデザイナ上はこんなことが書いてあったけれど DateTime.Ticks プロパティ (System) | Microsoft Docs の通りであるようだった。

まぁ、食い違っていたら1日どころではない差が出るのですぐ気づくだろう。もっとカッチリしたアプリケーションプログラムならググって出てくるようにDateTime構造体を作って1970年分のシリアル値を得るのが良いと思う。


以下悲しみの記憶。

div(ticks(subtractFromTime(utcNow(), 1969, 'Year')), 10000000) こんな感じで得られる。特定の時刻のものが必要なら utcNow() の部分を適宜差し替えればいい。

f:id:koudenpa:20200216181817p:plain

使っている関数の詳細はリファレンス参照 式関数のリァレンス ガイド | Microsoft Docs

現在時刻を得てから1970年からの経過時刻になるように1969年引いてからシリアル値を取得、秒の単位に切り捨てている。

MackerelのAPIは時刻をepoch秒で表現するのだけれど、これを簡単に得られない実行環境もあって、Azure Logic Apps(やMicrosoft Power Automateなど)はその一つだ。

↓の記事を書いたときにメモした記憶があったのだけれど、メモしてなかったのでメモした次第。記憶が全く当てにならない。どこか別の場所や記事に書いたのかもしれない。

koudenpa.hatenablog.com