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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでシートモジュール...
-
Excel VBAで、ユーザーフォーム...
-
VBAで別モジュールへの変数の受...
-
グラフのX,Y座標を取得したい
-
VBAで旧字体を異字体に一括で変...
-
acwzlibとは?
-
ユーザー定義関数に#NAME?が返...
-
VBA ユーザーフォーム Image1 ...
-
【vba】フォームに書いてあ...
-
ベースモジュールって?
-
Excel VBA 標準モジュール内で...
-
偶数/奇数の判定
-
Excel VBAでリンク切れをチェッ...
-
VBAで「メモリが不足しています」
-
工数見積もり
-
シートモジュールで使う変数を...
-
Excel VBA 『Call』で呼び出す...
-
VBのフォームモジュールと標準...
-
CGI.pmを別の複数の自作モジュ...
-
VBAのバージョンアップ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
VBでグローバル変数を宣言するには
-
Excel VBAで、ユーザーフォーム...
-
VBAで旧字体を異字体に一括で変...
-
ユーザー定義関数に#NAME?が返...
-
VBA This Workbookモジュール...
-
Excel VBA 『Call』で呼び出す...
-
【vba】フォームに書いてあ...
-
Access VBA標準モジュールにつ...
-
モジュールの最大数はいくつな...
-
'Range'メソッドは失敗しました
-
vba userFormのSubを標準モジュ...
-
VBAで別モジュールへの変数の受...
-
グラフのX,Y座標を取得したい
-
標準モジュールを削除したい。(...
-
VBAProjectのモジュ...
-
ExcelVBA:パブリック オブジェ...
-
Excel VBA 標準モジュール内で...
-
acwzlibとは?
おすすめ情報