![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
perlでサマータイムの判定はどのように行うのでしょうか?
スクリプト実行時に、米国、英国、豪州、ニュージーランドがそれぞれサマータイム時かどうかを判定したいと考えております。
どのようなスクリプトがよいでしょうか?
時間単位の正確さは求めておりません。
WEBサーバーは日本で借りていています。
参考サイト
http://webexhibits.org/daylightsaving/g.html
No.3ベストアンサー
- 回答日時:
#1>サマータイムの値が取れない
その後追試してみましたが、
#2で仰るように、gmtime, localtime は、マシンに設定されている状況に依存するようです。(日本では夏時間が設定されていないので、常に0)
標準時で取れるもんだと思い込んでいました、すみません。
モジュールを探してみましたが適当なモノが見つかりませんでしたけれども、
質問者の参考サイトにサマータイムの期間の一覧があるので、それを使ってゴリゴリとやればいいですね。
そこで
CPANモジュールの Date::Manip を使って書いてみました。
----------------------------------------------------------------
#http://webexhibits.org/daylightsaving/g.html
use Date::Manip;
Date_Init("TZ=JST");
$today = ParseDate("today");
print UnixDate($today,"%Y/%m/%d %H:%M:%S %Z\n");#現在日本時間
$USA = Date_ConvTZ($today,"JST","CST");#Central Standard:アメリカ中部標準時間
print UnixDate($USA,"%Y/%m/%d %H:%M:%S at USA\n");
$year = UnixDate($USA,"%Y");
#※2007年以降3月の2番目の日曜日に始まって、11月の最初の日曜日に終わる、と改正
$start = ParseDate("2:00am 1st sunday in April $year");
$end = ParseDate("2:00am last sunday in October $year");
if(Date_Cmp($start,$USA)<=0 && Date_Cmp($USA,$end)<0){
print "USA is Daylight Saving Time!\n";
}
$ENG = Date_ConvTZ($today,"JST","WET");#Western European:西ヨーロッパ時間
print UnixDate($ENG,"%Y/%m/%d %H:%M:%S at UK\n");
$year = UnixDate($ENG,"%Y");
$start = ParseDate("1:00am last sunday in March $year");
$end = ParseDate("1:00am last sunday in October $year");
if(Date_Cmp($start,$ENG)<=0 && Date_Cmp($ENG,$end)<0){
print "UK is Daylight Saving Time!\n";
}
$AUS = Date_ConvTZ($today,"JST","CAST");#Central Australian Standard:オーストラリア中部標準時間
print UnixDate($AUS,"%Y/%m/%d %H:%M:%S at AUS\n");
$year = UnixDate($AUS,"%Y");
$start = ParseDate("last sunday in October $year");
$end = ParseDate("last sunday in March $year");
if(Date_Cmp($start,$AUS)<=0 && Date_Cmp($AUS,$end)<0){
print "Australia is Daylight Saving Time!\n";
}
$NZ = Date_ConvTZ($today,"JST","NZST");#New Zealand Standard
print UnixDate($NZ,"%Y/%m/%d %H:%M:%S at NZ\n");
$year = UnixDate($NZ,"%Y");
$start = ParseDate("1st sunday in October $year");
$end = ParseDate("3rd sunday in March $year");
if(Date_Cmp($start,$NZ)<=0 && Date_Cmp($NZ,$end)<0){
print "New Zealand is Daylight Saving Time!\n";
}
Date::Manipはインストール済みでしたのでスームーズにうまく動作しました。
以前の第2水曜日の件に続いてホントにありがとうございました。
No.2
- 回答日時:
gmtimeやlocaltimeの夏時間はサーバに設定されているロケールに依存すると思います。
(サーバが日本にあるなら大抵はロケールも日本)
他国の夏時間かどうかを調べるにはTime::Timezoneモジュールで調べられそうです。
http://search.cpan.org/~muir/Time-modules-2003.0 …
この回答への補足
回答ありがとうございます。
Timezone.pmをCPANからインストールすることができました。(ローカルのアクティブパールには、うまくインストールできませんでした。そんなレベルの人です。)
ただ私には利用方法が理解できませんでした。orz
日本語のドキュメントを探したのですが、うまく見つけられませんでした。
なにかわかりやすいサイトはないでしょうか?
No.1
- 回答日時:
gmtime (グリニッジ標準時)
の返値 (秒,分,時,日,月,年,曜日,年の通算日,夏時間)
で夏時間の部分が真なら夏時間
勘違いコメントだったらすみません
この回答への補足
回答ありがとうございます。
意図はあっているのですが、うまくサマータイムの値が取れないので困ってます。
$isdst = (gmtime(time))[8];
print $isdst;
とか
$isdst = (gmtime(time -60*60*5))[8];
print $isdst;
というようにしても、$isdstは必ず「0」を返してくるのです。
なにかやり方が悪いんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux redmineにメールを飛ばす方法 1 2022/09/13 22:02
- 政治 自民党は、日本国民が、国際人権委員会に申し立てするのを嫌がっています。何故でしょうか? 1 2022/10/03 16:57
- FX・外国為替取引 FXでのロンドン時間 2 2022/09/12 16:21
- 大学受験 高校3年生です。大学に行きたいんですが、この前受けた進研模試では結果がよくありませんでした。 受験科 3 2022/07/07 15:50
- 環境・エネルギー資源 日本のサマータイムの導入に賛成、反対、どちらですか? また、理由をお聞かせください。 23 2022/08/20 12:24
- 政治 福島原発の最高裁判所の判決 23 2022/06/17 22:41
- 高校受験 残り2日で高校受験です。不安で仕方がありません。 私は模試でD判定→D判定(8月)→A判定→A判定→ 2 2023/02/12 13:33
- 政治 日本はアフリカのタンザニアと同じですか? 1 2023/03/27 21:11
- 法学 判決は人の人生時には命まで左右するだからこそ裁判官は非常に厳しい選考を通じて採用されるわ 2 2023/05/17 08:00
- 医学 二次医療圏の人口分布 1 2023/05/10 11:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
bashスクリプト
-
perlのrequireの動き方について...
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlの構文でカンマの意味が分...
-
perlについての質問
-
perlのプログラミング 部分入れ...
-
ペプシコーラとコカ・コーラとD...
-
perlをバージョンアップしたら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
先月(YYYYMM)の生成方法
-
日齢計算プログラム
-
大至急お願いします。出力で悩み。
-
2つの日付・時間の差分を求め...
-
サマータイムの判定について
-
CSV読み込み時に条件に合う行(...
-
1桁の日付に0を付ける
-
Perlの日付の比較に関して
-
当日の日付をプルダウンメニュ...
-
ソースの詳細を教えてください。
-
日付の差分の求め方(日、分)
-
前日の日付取得するには?
-
体重が3kg増える/減る の英語...
-
日付範囲をの連番と月末を取得
-
PICで世界時計を作りたいのですが
-
PerlからMysqlに接続してデータ...
-
Schemeのプログラミング うる...
-
perlでcheckboxがうまく整理で...
-
時間の計算について
-
年令の計算方法
おすすめ情報