2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Amazon Linux AMIとUbuntuでのTimeZone設定 date PHP Ruby JavaでのTimeZone出力確認

Posted at

Amazon Linux AMIとUbuntuでのTimeZone設定と設定によってPHP Ruby Javaの出力の違いを確認してみました。

Amazon Linux AMIの初期設定 確認

Amazon Linux AMIの初期設定は/etc/localtime /etc/sysconfig/clock共にUTCになっています。

/etc/localtime /etc/sysconfig/clockの初期設定

$ cat /etc/localtime
TZif2UTCTZif2UTC
UTC0

$ cat /etc/sysconfig/clock 
ZONE="UTC"
UTC=true

date PHP Ruby Javaでの確認

$ date
2016年 xx月 xx日 x曜日 xx:xx:xx UTC

$ php -a
php > echo date_default_timezone_get();
UTC

$ irb
irb(main):001:0> Time.now.zone
=> "UTC"

# Java System.out.println(TimeZone.getDefault());
sun.util.calendar.ZoneInfo[id="UTC",...]

Ubuntuの初期設定 確認

Ubuntuには/etc/sysconfig/clockが存在しない代わりに/etc/timezoneが存在します。

/etc/localtime /etc/timezoneの初期設定

$ cat /etc/localtime
TZif2UTCTZif2UTC
UTC0

$ cat /etc/timezone
UTC

date PHP Ruby Javaでの確認

$ date
xx xx:xx:xx UTC 2016

$ php -a
php > echo date_default_timezone_get();
UTC

$ irb
irb(main):001:0> Time.now.zone
=> "UTC"

# Java System.out.println(TimeZone.getDefault());
sun.util.calendar.ZoneInfo[id="UTC",...]

Amazon Linux AMIとUbuntuのlocaltimeの変更

Amazon Linux AMIとUbuntu共に/usr/share/zoneinfo以下の中から設定したいTimeZoneを選び、/etc/localtimeにリンクを張ります。

TimeZoneをAmerica/Los_Angelesに変更

$ ls /usr/share/zoneinfo
Africa	    Chile    Factory	Iceland      MET       posix	   UCT
America     CST6CDT  GB		Indian	     Mexico    posixrules  Universal
Antarctica  Cuba     GB-Eire	Iran	     MST       PRC	   US
Arctic	    EET      GMT	iso3166.tab  MST7MDT   PST8PDT	   UTC
...

$ sudo ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

localtimeをAmerica/Los_Angelesに変更後Amazon Linux AMIで確認

/etc/localtimeをAmerica/Los_Angelesに変更後/etc/localtime /etc/sysconfig/clockの確認

$ cat /etc/localtime
...
PST8PDT,M3.2.0,M11.1.0

$ cat /etc/sysconfig/clock 
ZONE="UTC"
UTC=true

date PHP Ruby Javaでの確認

$ date
2016年 xx月 xx日 x曜日 xx:xx:xx PST

$ php -a
php > echo date_default_timezone_get();
America/Los_Angeles

$ irb
irb(main):001:0> Time.now.zone
=> "PST"

# Java System.out.println(TimeZone.getDefault());
sun.util.calendar.ZoneInfo[id="UTC",...]

localtimeをAmerica/Los_Angelesに変更後Ubuntuで確認

/etc/localtimeをAmerica/Los_Angelesに変更後/etc/localtime /etc/timezoneの確認

$ cat /etc/localtime
...
PST8PDT,M3.2.0,M11.1.0

$ cat /etc/timezone
UTC

date PHP Ruby Javaでの確認

$ date
xx xx:xx:xx PST 2016

$ php -a
php > echo date_default_timezone_get();
America/Los_Angeles

$ irb
irb(main):001:0> Time.now.zone
=> "PST"

# Java System.out.println(TimeZone.getDefault());
sun.util.calendar.ZoneInfo[id="UTC",...]

Javaに変更したTimeZoneを適用

JavaのTimeZone出力では/etc/localtimeを変更しただけではTimeZoneが変更されませんでした。
Amazon Linux AMIでは/etc/sysconfig/clock、Ubuntuでは/etc/timezoneも変更します。

Amazon Linux AMIの場合は/etc/sysconfig/clockを変更します。

$ sudo vim /etc/sysconfig/clock 
ZONE="America/Los_Angeles"
UTC=true

# Java System.out.println(TimeZone.getDefault());
sun.util.calendar.ZoneInfo[id="America/Los_Angeles",...]

Ubuntuの場合は/etc/timezoneを変更します。

$ sudo vim /etc/timezone
America/Los_Angeles

# Java System.out.println(TimeZone.getDefault());
sun.util.calendar.ZoneInfo[id="America/Los_Angeles",...]

またUbuntuの場合はdpkg-reconfigure tzdataをすることで/etc/localtime /etc/timezoneの両方を同時に設定もできます。

スクリーンショット 2016-12-22 12.00.28.png

$ dpkg-reconfigure tzdata
# 上記設定画面が表示されAmerica/Los_Angelesを設定

# Java System.out.println(TimeZone.getDefault());
sun.util.calendar.ZoneInfo[id="America/Los_Angeles",...]

結果

TimeZoneを変更する際には/etc/localtimeの他にAmazon Linux AMIでは/etc/sysconfig/clock Ubuntuでは/etc/timezoneを変更する必要がありそうです。

2
1
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?