LoginSignup
2
1

More than 1 year has passed since last update.

date +%s(UNIX時間)に移植性がないのは過去の話

Posted at

はじめに

むしろ date +%s に移植性がなかったの?と驚く人のほうが多いのではないかと思いますが、現在の POSIX Issue 7 では、date コマンドの書式で +%s (UNIXTIME) は対応していません。それが改定され POSIX Issue 8 では対応するようになります。

date +%s が使えない環境

%s が使える(または使えない)環境は以下のとおりです。使えない環境に取り消し線を付けています。

  • Debian 2.2r7 (2000-08) GNU 版
  • FreeBSD 1.0 (1993-11)
  • Solaris
    • Solaris 10 (2005-01) ※ 2024 年 1 月サポート終了
      • /usr/bin/date 歴史的実装版
      • /usr/xpg4/bin/date POSIX 準拠版
    • Solaris 11 (2011-11)
      • /usr/bin/date 歴史的実装版
      • /usr/xpg4/bin/date POSIX 準拠版
  • AIX 5.3 (2004-08)
  • HP-UX
    • HP-UX 11.22 (2002-06-02)
    • HP-UX 11.23 (2003-10-01)

こうやって見ると使えなかったのは Solaris と HP-UX ぐらいで、現在もサポートが続いている OS は Solaris 10 ぐらいしかなく %s が使えない環境はほとんどないといって良さそうです。

参考

POSIX Issue 8 でどのように変わったのか?

経緯はこちら

現在の POSIX date では date コマンドで使える書式がずらずらと書かれているのですが Issue 8 ではそれらがばっさり削られて strftime() を参照するように変わっています。現在の Issue 7 strftime() には %s はありませんが Issue 8 では追加されます。

さいごに

date +%s に移植性がないのは、あくまで POSIX Issue 7 の話です。現実にはどの環境でも使えると考えてよく、移植性があります。単に POSIX が更新されていないというだけの話です。どうしても date +%s に対応していない環境でも動かさなければいけないというのであれば話は別ですが、現在の環境で使えるのであれば date +%s を使って構いません。もしどうしても POSIX Issue 7 に準拠したいんだよという方は「シェルスクリプトでUNIX時間⇔日付の相互変換を行う関数(POSIX準拠)」を参照してください。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1