フラメンコに関すること、フェスティバル・デ・ヘレスに関することを書き散らしています。ヨロシクね。
2010年09月09日 (木) | 編集 |
日本より海外のほうが仕事がはやいので
イギリスかドイツかフランスあたりに(?)
ヨーロッパ各国の標準時をJavascriptで取得するAPIがありそうに思えるんだけど
解説を現地語で読むのが苦痛。。。むしろ無理。

なので、日本標準時プロジェクトのAPIを使用し
スペインとの時差の8時間を減算して算出しました。
基本的なコードの書き方はpasol.netのこのページを参考にしました。

・サマータイム処理を加筆しました。
・スペイン以外の外国の時刻を表示したい場合は、時差を調べて書き換えるだけです。
・スペイン以外のサマータイム処理をしたい場合
 カスタマイズし易いように解説図をつけておきました。

■ちなみに2010年9月8日現在
JSONTにしょっちゅう手を入れているようで、ちょくちょく時刻が拾えません(涙)。
絶対に時間表示が必要なひとは
仕様が落ち着くまでは別の方法を探したほうがいいかも。

コードは「続きを読む」で開いてください。



<script type="text/javascript">
var madrid;
var beginSummertime, finishSummertime;
var semana = new Array('日', '月', '火', '水', '木', '金', '土');
//------------------------------------------------------------------------
// 日本標準時からマドリッド標準時を計算する
//------------------------------------------------------------------------
function jsont( json)
{
  var japan = json['st'] * 1000;                   // 1970.01.01からの総秒数
  madrid = japan - 8*60*60*1000;                // 日本から8時間遅らせる
  getSummertime();
  if( madrid >= beginSummertime && madrid <= finishSummertime)
    madrid += 1*60*60*1000;                   // 1間進める
  tid = setInterval( 'printDate()', 1000);
  printDate();
}
//------------------------------------------------------------------------
// スペインのサマータイムは
//  3月の最終日曜日~10月の最初の土曜日
//------------------------------------------------------------------------
function getSummertime()
{
  var work = new Date( madrid);
  var ano = work.getFullYear();

  work = new Date( ano+ ',3,31');
  var weekC = work.getDay();                      // 3月31日の曜日
  beginSummertime = work.getTime() - weekC*24*60*60*1000; // 曜日数分引き戻す

  work = new Date( ano+ ',10,1');
  weekC = 6 - work.getDay();                      // 10月1日の曜日
  finishSummertime = work.getTime() + weekC*24*60*60*1000; // 6-曜日数分進める
}
サマータイム計算用
//------------------------------------------------------------------------
// toLocalString()を使うとブラウザごとに実装がちがうので
// 面倒でも get---()関数 を使って表示を整える
//------------------------------------------------------------------------
function printDate()
{
  var dispStr = '';
  var str = new Date( madrid);

  dispStr = str.getFullYear()+ '年';
  dispStr += str.getMonth() + 1 + '月';
  dispStr += str.getDate()+ '日';
  dispStr += '('+ semana[ str.getDay()]+ ')  ';
  dispStr += str.toLocaleTimeString()+ ' ';
  dispStr += ( str.getHours() <= 12)? '午前': '午後';

  document.getElementById('madridDate').innerHTML = dispStr;
  madrid += 1000;
}
</script>
<script type="text/javascript" src="http://ntp-a1.nict.go.jp/cgi-bin/jsont"></script>
<div id="madridDate"></div>




■2010年9月14日追記
午前、午後の判定は↓こーですね(恥)。
(str.getHours() < 12)?"午前"; "午後";
いま現地時間の12:00なんですけど、午前と表示されていて焦りました。あはは。
コメント
この記事へのコメント
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
2010/12/13(月) 06:55:19 | | #[ 編集]
Re: ご質問です。
管理人のみ閲覧可能なコメントは【最近のコメント】に反映されないので
コメントがついていることに気づくのが遅れました。
そして、この欄には英数で長文をかけないので
↓ ↓ ↓ ココ ↓ ↓ ↓ にコードを書いておきました。
http://pukachan.blog94.fc2.com/blog-entry-507.html

この欄に長文の英数がかけないのはスパムを弾くためです。
というわけで、正解への誘導リンクも英数なので
あたしのブログなのに、あたしのコメントがスパム扱いされてしまいました(大笑い)。
以下、スパム対策にたいする対策の無意味な日本語です。
あいうえお かきくけこ。
さしすせそ たちつてと。
なぬぬねの はひふへほ。
2010/12/28(火) 05:19:33 | URL | みゆき #-[ 編集]
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック