No.3ベストアンサー
- 回答日時:
> ローカル時刻ではなくて、「時差」そのものを知りたいのです。
あ、すみません。
時差を求めるには
use DateTime;
use DateTime::TimeZone;
my $local_dt = DateTime->now(time_zone => 'local');
my $tz = DateTime::TimeZone->new(name => 'local');
print $tz->offset_for_datetime($local_dt); # => 32400
のようにすればUTC(GMT?)との時差が秒数で返ります。
日本は+9時間なので9 * 60 * 60で32400が返るはずです。
なるほど、わかりました。
でも、機能も多そうなモジュールではあるのですが、時差の取得のためだけにインストールするには、あまりメリットがなさそうです。
あまり必要モジュールを増やしたくないので、今回は、
use Time::Local;
my $now=time();
my $off=(timegm(localtime($now))-timegm(gmtime($now)))/60;
この方法でいこうと思います。
いろいろとどうもありがとうございました。
No.2
- 回答日時:
http://d.hatena.ne.jp/perlcodesample/20081120/12 …
http://d.hatena.ne.jp/perlcodesample/20081119/12 …
DateTimeは特に何も指定しなければUTCの結果が返ってきます。
なので上の例のように
my $dt = DateTime->now;
とすればUTCでの時刻が取得できますし
my $japan_dt = DateTime->now(time_zone => 'Asia/Tokyo');
とすれば日本の時刻が取得できるはずです。
また
my $local_dt = DateTime->now(time_zone => 'local');
とすると、現在のマシンのタイムゾーンにあった時刻を返してくれるのですが、
自分がこれを実行したときに、確かcygwinなどで現在のタイムゾーンを判別できなかったりすることがありました。
(今やったら判別できましたが・・・どこで見たのか忘れてしまいました--;)
なので日本の外にスクリプトを持ってかないなら
my $japan_dt = DateTime->now(time_zone => 'Asia/Tokyo');
と明示的にタイムゾーンを指定した方がいいです。
それにこの方が現在のタイムゾーンを判別する必要がなくて高速ですし。
ところでtitokaniさんはどういった環境でスクリプトを動かそうとしているのでしょうか。
モジュールのインストールが難しい環境にあるのですか?
この回答への補足
ありがとうございます。
取得したいのは、ローカルタイムではなく、時差なのです。
また、自分のマシンですが、まあ、日本以外に置くことはありえないと思いますが、明示的に指定したくはないのです。
なので、せいぜい環境変数TZを参照する程度で、自マシンの時差を取得したいというのが希望です。
>ところでtitokaniさんはどういった環境でスクリプトを動かそうとしているのでしょうか。
>モジュールのインストールが難しい環境にあるのですか?
webサーバーで動かすことを考えています。
モジュールのインストールも可能ですが、クラッシュなどに備えて、なるべく追加のモジュールは減らしておきたいのです。
実際のところ、DateTimeを使っても、UTCとの差分を取るしかないのであれば、Time::Local、gmtime、localtimeで行うのと変わらないかとも思われるのですが、なにか利点はありますでしょうか?
No.1
- 回答日時:
何処と何処の時差ですか?
海外サーバと日本の時差とかでしょうか。
とりあえず時差はDateTimeというモジュールを使えば求めることができます。
http://iandeth.dyndns.org/mt/ian/archives/000619 …
この回答への補足
ありがとうございます。
取得したいのは、現在perlが動いているマシンのUTCとの時差です。
DateTimeですが、インストールが必要なんですね、どうしたものか・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(社会・学校・職場) 施設出身て身寄りがいない 5 2022/05/10 10:31
- 会社・職場 残業代が出ないのに10分くらい遅刻したら15分分の給料が天引きされた(´;ω;`) 毎日ほぼ30分の 6 2023/02/28 20:36
- 統計学 t検定について教えてください 2 2023/02/23 16:35
- 一眼レフカメラ マップカメラのネットショッピング 1 2022/12/17 01:35
- 数学 数学の問題の解き方を教えてください! 3 2022/11/02 17:32
- 高校 高校のテストの高得点 3 2023/05/24 21:04
- 大学受験 高2旧帝大志望です。共通テスト数学のアドバイスください泣 2 2022/12/14 19:32
- 政治 中国は一票の格差4倍で、日本は3倍ですが、それでも日本は民主主義国なら中国も同じですよね? 2 2023/03/16 04:52
- 一戸建て 家の太陽光発電をLIXIL TEPCOの『建て得』採用してる人いませんか? 現在の発電量などをリアル 1 2023/04/03 06:39
- 大学受験 怠惰直したい 5 2022/06/02 15:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ArduinoのジャイロモジュールMP...
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
モジュールとは何ですか
-
Form間の値の渡し方
-
標準モジュールを削除したい。(...
-
偶数/奇数の判定
-
モジュールの最大数はいくつな...
-
VBA モジュールで共通に使う変...
-
VBAで旧字体を異字体に一括で変...
-
印刷後メッセージボックスを表...
-
本当にPublicな変数(配列で)
-
Excel VBA 定義されたプロージ...
-
モジュールとクラスの違いって...
-
グラフのX,Y座標を取得したい
-
VBのフォームモジュールと標準...
-
Excel VBA 『Call』で呼び出す...
-
VBA This Workbookモジュール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
VBでグローバル変数を宣言するには
-
エクセルVBAでシートモジュール...
-
VBA This Workbookモジュール...
-
モジュールの最大数はいくつな...
-
Excel VBAで、ユーザーフォーム...
-
VBAで旧字体を異字体に一括で変...
-
Access VBA標準モジュールにつ...
-
VBA モジュールで共通に使う変...
-
'Range'メソッドは失敗しました
-
グラフのX,Y座標を取得したい
-
モジュールとは何ですか
-
Excel VBA 『Call』で呼び出す...
-
プラグイン、ライブラリ、コン...
-
【vba】フォームに書いてあ...
-
モジュールからフォームのボタ...
-
モジュールとクラスの違いって...
-
acwzlibとは?
おすすめ情報