• ベストアンサー
  • 暇なときにでも

dateコマンドで出てくるDST

Windows 10 で動く Windows Subsystem for Linux が正式版になったので早速インストールして Ubuntu で動かしています。そこでコマンドラインから date コマンドを実行したところ以下のように出力されました。 Wed Nov 15 18:00:01 DST 2017 この DST とはなんでしょう? 普通なら JST 等のタイムゾーンが出る所ですよね? DST という名称のタイムゾーンがあるんでしょうか? (だとすると Daylight Saving Time と同じで非常に紛らわしいように思いますが)。 一体これはどういうことかと思い、 date '+%Z %z' をやってみたらこう出ます。 DST +0900 どうやら日本と同じようです。環境変数 TZ に Japan 以外の何か知らない国名がセットされているのかなと思って $TZ を出してみましたが空で、env | grep TZ で出力がないので TZ は完全にセットされていないようです。 じゃあ TZ を Japan にセットしたらどうなるのかというと、これは以下のように JST で出ます。(以下は最初の行が date のみ、次の行が date '+%Z %z' の出力) Wed Nov 15 18:04:49 JST 2017 JST +0900

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数452
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • kteds
  • ベストアンサー率41% (1749/4170)

>(だとすると Daylight Saving Time と同じで非常に紛らわしいように思いますが)。 まさにDaylight Saving Timeを表示しているということなのでは?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。しかしそうではないようで、どうやら Bash on Ubuntu on Windows の頃からあるバグのようです。 http://tech.guitarrapc.com/entry/2017/06/20/033946 https://github.com/HowardHinnant/date/issues/102 http://pslabo.hatenablog.com/entry/2017/08/26/210928 しょうがないので自分でシンボリックリンクすることにします。

関連するQ&A

  • Solaris9でdateコマンドの結果がおかしい

    sun fire + Solaris9でシェルを作成しました。 目的は、1ヶ月前のログを削除する です。 で、こんなシェルを作成しました。 #!/bin/sh # logmove.sh DAY=`date +%d` RMDAY=`env TZ=JST+735 date +%Y%m%d` # 24H*31Day-9H=735 RMFILE=log_${RMDAY}.* (以下省略) しかし、この結果、$RMDAYには今日の日付しか返ってきません。これを RMDAY=`env TZ=JST+159 date +%Y%m%d` # 24H*7Day-9H=159 とすると、ちゃんと1週間前の日付が返ってきます。 dateの仕様なのか、シェルの仕様なのか良くわかりません。解決策はないでしょうか。

  • HPUX 11iでの日付について

    AIX環境では、「env TZ=JST+63 date」コマンドで 三日前の日付が取得できたのですが、 HPUX 11iでは日付が取得できません。 結果としてはTZがJSTからEDTになってしまいます。 どうにかして、3日前を取得することは出来ませんでしょうか? 確認したところJST+では24までしか対応しておりませんでした。 HPUX 11i [TEST:root]env TZ=JST+63 date Wed May 31 03:42:48 EDT 2006 AIX 5.1 [TEST2:root]env TZ=JST+63 date Sun May 28 16:46:54 JST 2006

  • Linuxでdateコマンド出力をmmddyyで出したい

    Linux初心者です。 Linuxでdateコマンド出力をmmddyy形式で出したい。 #date (例)Wed Oct 17 01:13:44 JST 2001 という出力をmmddyy形式で出力させるには、 どうしたら、良いでしょうか?

  • timedatectlコマンドに関して

    linux(CentOS7)のtimedatectlコマンドに関して 最初見たときにデフォルトが以下のような感じでした。 timedatectl Local time: Mon 2017-02-17 13:43:53 JST Universal time: Mon 2017-02-17 04:43:53 UTC RTC time: n/a Time zone: UTC (JST, +0900) NTP enabled: n/a NTP synchronized: yes RTC in local TZ: no DST active: n/a 「Local time」だけJST でyum updateした後に、「Local time」もUTCとなり時刻がおかしくなりました。 治す方法を探していると、 timedatectl set-timezone Asia/Tokyo で直せと書いているのですが、 それをすると時刻の刻みは治りますが、元通りでないのが釈然としません。 timedatectl Local time: Fri 2017-02-17 16:04:21 JST Universal time: Fri 2017-02-17 07:04:21 UTC RTC time: n/a Time zone: Asia/Tokyo (JST, +0900) NTP enabled: n/a NTP synchronized: no RTC in local TZ: no DST active: n/a 元通りにする方法はありませんか。 それと、 Time zoneをUTCにしてローカルとしてJSTにするのと、 Time zoneそのものをJSTにするのとでは何が違いますか? 以上、よろしくお願いします。

  • サーバーのdateをUTCにする方法

    ネット調べてJSTからUTCに変更しましたが、表示はJSTのまま。ほかの設定のところ、又は別の原因、経験お持ちの方、教えてください。 やったこと: (1)rootになって、/rootの位置から/etc/localtimeを削除し、新しいソフトリンクを作る。 ln -s /usr/share/zoneinfo/UTC /etc/localtime (2)/etc/sysconfig/clockをviで開いて、以下の様に設定する。 ZONE="UTC" --> もともとはAsia/Tokyoだった。 UTC=true ARC=false 以上で、成功した場合、dateコマンドでUTCになったことが確認できますよね。 私の場合、表示はJSTのまま。 Wed Nov 27 22:26:03 JST 2013 clockコマンド実行すると、おかしいこと(面白いこと?)起きる。 ようは、 Wed 27 Nov 2013 01:26:57 PM JST -0.751004 seconds のように表示されて、時間表示=「01:26:57 PM」=は合っています。ただし、”UTC”でなく”JST”になっています。

  • Strict Standards: date()   mkdate()

    PHP5を使っています。 error_reporting(E_STRICT); をつけると、2つのエラー?が画面に表示されます。 これが表示されるということは、何か原因があると思います。 phpのコードで根本から直したいので、対処方法をご存知の方、教えてください。 error_reportingをコメントとかは、したくないです。 (1) Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' (2) Strict Standards: mktime() [function.mktime]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST'

    • ベストアンサー
    • PHP
  • 複数の文字列を検索

    あるログファイルの文字列を取得して。検索でヒットした文字列行 を返すスクリプトを作成しております。 検索:"OK"    日付 対象行 : OK! Tue Jul 19 文字列"OK"は普通に # grep "OK" ログファイルPath で検索できますが、 文字列と日付を両方引っ掛ける場合は・・・ grep -e "OK" -e env LANG=c date -u +"%a %b $d" ログファイルPath 当然コマンドエラーになります。 dateコマンドから日付を取得して、grepにて引っ掛ける方法を知りたいので すが、お分かりになる方、ご教授お願い致します。

  • タイムゾーンの設定について(CentOs)

    LAMPにてWEBを制作をしています。 linux系はちょこちょこ触ったことはあるのですが深く知らないといったレベルです。 ですので説明下手になり長くなりますが最後まで目を通して頂けたら幸いです。 調査→対応→現状までの流れを説明させていただきます。 --------------------------------------------------------------------- 現在、デバッグを行うためにシステム時間をちょこちょこ変えながらテストをしてるのですが 私の環境のみ 日付がAM8時で日にちが変わるという状態になり、いろいろ調べてるうちに タイムゾーンの問題という事にきづきました。 dateコマンドでタイムゾーンがPDTになっいるのを確認し /etc/sysconfig/clock が/America/Los になっていたので/Asia/Tokyoに修正。 reboot dateコマンド PDTから変わらず。 で、さらに調べて /usr/share/zoneinfo/Asia/Tokyo もしくは /Japanのファイルを/etc/locatimeにリンクしました。 reboot dateコマンド PDTから変わらず。 その後、 ・環境変数のTZにJSTをぶち込んだり ・sysconfig/clockをGMTで記述してみたりと とりあえずの処置で対応してたのですが 気持ち悪い&悔しいので再度調査したのですがどこもlocaltimeのリンクを直すような記事しか のってない状態で困っています。 その後私の環境のJapanもしくはAsiaTokyoのファイルそのものがPDTになちゃってるのではと思い、 正常に動いているメンバの環境から同ファイルをコピし環境に入れ込みました。 するとdataコマンドできちんとJSTと表示され、解決したかと思ったのですが rebootするとGMTに戻ってしまいました。 sysconfig/clockがその時、前の対応でGMTで記述してたのでそれが問題かと思い Japanに修正し、rebootしなおした所正常にJSTになりました。 原因はいまいちわからないけどとりあえず当初の目標は達成したかと思ったのですが 日付の変更を行った直後にdataコマンドを投げた所今度はタイムゾーンがEDTになりました… さらにsysconfig/clockの中身も/America/New_York になるという新展開に。。。 もうこうなってくるとさすがに何がなんだかわからなくなってしまいここで質問させて いただいた次第です。 何か原因が分かる方、もしくは対処方法がわかる方いましたら 参考URLだけでもいいので教えて頂けると助かります。 もし何か情報として足りない物があれば指摘していただければと思います。 また、説明下手な上に乱文になってしまい大変申し訳ありませんでした。 最後まで読んでいただいた方には感謝いたします。

  • シェルファイル内での「setenv」、「unsetenv」の実行 その2

    シェルファイルの先頭行に、 「#!/bin/csh」 と記述したところ「system: Undefined variable.」というメッセージが出力されてしまいました・・・。 どうしたらよいのでしょう?設定の問題なのでしょうか? よくわからないのですが、 「env | grep csh」 と実行してみると「SHELL=/user/bin/csh」という結果がえられるのですが・・・。

  • localtime()での時間差の計算の仕方

    $ENV{'TZ'} = "JST-9"; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); my $now =sprintf("%04d/%02d/%02d-%02d:%02d",$year+1900,$mon+1,$mday,$hour,$min); とすると 2007/01/28-15:56 のようにデータとして取得できるのですが・・・ これと登録日($date=2006/12/31-12:25)との日数差の計算ができません $now-$date とすると年数のところしか計算できず1としか表示できません 登録7日後以降にイベントを発生させたいのですが計算ができないのでうまくいきません 両方time()でやれば$now-$date>604800 とすればなんとかできるのですが登録日は『2006/12/31-12:25』の形で使いたいのです 登録日と現在の日数の差の計算方法を教えてくださいm(--)m

    • ベストアンサー
    • CGI