- ベストアンサー
javascriptプログラムを日本時間に直す方法
- twitterをHTMLサイトに埋め込むために「Add Twitter to your blog」というJavaScriptで書かれたものを使用しているのですが、表示時間が日本時間ではなくアメリカのどこかの時間で表示されてしまいます。
- 9時間ズレです。これを修正しようとしたのですが、上手いことできません。どこを修正すればよいのかご教授願います。
- 時間に関係していると思われる部分のソースを載せます。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (5)
- pc_net_sp
- ベストアンサー率46% (468/1003)
#4の訂正です。 >気になったところすべてに入れてみましたがダメでした。。 気になる点に、一つずつ入れてみてください。 それで駄目なら、JavaScriptを初期に戻し、 return hour + ':' + min + ' ' + ampm; return mon + ' ' + day + th + (thisyear != year ? ', ' + year : ''); この行を片方づつ削除してみて下さい。 この行が、日付表示行と時間表示行ならば、この行の前に時間(hour)に9を加算させる。 それが上手くいけば、日付(day)をifを使い、hourが25以上になった時に、25-24=1としてdayに+1を加える。 各月によりますが、dayに+1をたす事により32日となた場合は月(mon)の補正を書ける。 などなど複雑ですね。 多分、ただのhtmlに組み込むjavascriptなら、すでに解決していると思うのですが、ブログ用は勝手が違うみたいです。 ただのhtmlに組み込むjavascriptなら、当方以外の回答者様がベスト回答されているのかもしれません。 ----------------------- >twitterをHTMLサイトに埋め込むために >「Add Twitter to your blog」 >というJavaScriptで書かれたものを使用しているのですが、 これって、ブログ用じゃないhtml用ではどうなのかな?? なんて、浮気心が・・・ m(_ _)m
お礼
お世話になっています。 ありがとうございました。 後の解答の参考URLを見て解決できました。
- pc_net_sp
- ベストアンサー率46% (468/1003)
#2・#3さんの情報でふと思ったのですが・・・ delta = で始まる何処かの行に「+32400」を入れてみる。 9(時間)x60(分)x60(秒)= 32400(秒)です。 getTimezoneOffset()か、getTime()あたりの行・・・ グリニッジ標準時を取得している所に入れれば良いかと・・・ 推測ですので、混乱したら無視して下さい。 m(_ _)m
補足
お世話になっています。 > delta = > で始まる何処かの行に「+32400」を入れてみる。 > 9(時間)x60(分)x60(秒)= 32400(秒)です。 > getTimezoneOffset()か、getTime()あたりの行・・・ 気になったところすべてに入れてみましたがダメでした。。
- yyr446
- ベストアンサー率65% (870/1330)
<9時間ズレです。>なら、アメリカのどこかの時間でなくて、 わざわざ、グリニッジ標準時に直しているようです。 ソースをざっと見たところ delta = delta + (relative_to.getTimezoneOffset() * 60); の部分が、現地時間との差を秒で算出しているところみたいなので、 現地時間との差を0秒となるように。 delta = delta; と直すだけでは....
補足
早速のご回答ありがとうございます。 > delta = delta; > と直すだけでは.... 仰せのように書きなおしてみましたがダメでした。。 ソースすべてを書きたいのですが、長すぎて投稿することができません。。。
- mtaka2
- ベストアンサー率73% (867/1179)
9時間ずれるというのがどっち方向なのかわからないですし、 質問に挙げられたコードだけを見ての判断で、 relative_time の引数がどういう仕様かわからないので、推測になりますが、 時間が9時間短く表示されるのでしたら、 > delta = delta + (relative_to.getTimezoneOffset() * 60); この行をばっさり削除してみてください。
補足
早速のご回答ありがとうございます。 > > delta = delta + (relative_to.getTimezoneOffset() * 60); > この行をばっさり削除してみてください。 仰せのように削除しましたが変わりませんでした。。 コードを載せようと試みたのですが、文字数制限に引っ掛かり載せられませんでした。 少し上を載せたいと思います。 // ready and browser adapted from John Resig's jQuery library (http://jquery.com) function DOMReady() { if ( document.addEventListener && !browser.webkit ) { document.addEventListener( "DOMContentLoaded", fireReady, false ); } else if ( browser.msie ) { // If IE is used, use the excellent hack by Matthias Miller // http://www.outofhanwell.com/blog/index.php?title=the_window_onload_problem_revisited // Only works if you document.write() it document.write("<scr" + "ipt id=__ie_init defer=true src=//:><\/script>"); // Use the defer script hack var script = document.getElementById("__ie_init"); // script does not exist if jQuery is loaded dynamically if (script) { script.onreadystatechange = function() { if ( this.readyState != "complete" ) return; this.parentNode.removeChild( this ); fireReady.call(); }; } // Clear from memory script = null; } else if ( browser.webkit ) { // Continually check to see if the document.readyState is valid var safariTimer = setInterval(function () { // loaded and complete are both valid states if ( document.readyState == "loaded" || document.readyState == "complete" ) { // If either one are found, remove the timer clearInterval( safariTimer ); safariTimer = null; // and execute any waiting functions fireReady.call(); } }, 10); } }
- pc_net_sp
- ベストアンサー率46% (468/1003)
グリニッジ標準時で、表示されている物と思われます。 何処かで誤差の9時間を調整すればいいのですが、、、、 英語は苦手なので(単語は良いけど、文章は・・・)、コメントを入れていらっしゃいます英文を理解できれば、修正方法が分かると思われます。 役に立てずに書き込みしてしまいました。 m(_ _)m ------------------------- if (hour == 0) { hour = 12; } else if (hour == 12) { ampm = 'PM'; } else if (hour > 12) { hour -= 12; ampm = 'PM'; } 間違っているとお思いますが、、、、この行の前に、、、 hour = hour + 9; if (hour > 24) { day = day + 1; } っと言う感じのものを入れる事で、修正できる感じがします。
お礼
早速のご回答ありがとうございます。 仰せの通りに、 ・・・ function formatTime(date) { var hour = date.getHours(), min = date.getMinutes() + "", ampm = 'AM'; hour = hour + 9; if (hour > 24) { day = day + 1; } if (hour == 0) { hour = 12; } else if (hour == 12) { ampm = 'PM'; } else if (hour > 12) { ・・・ としてみたのですが、24時間以前のツイートがあった場合に呼び出さなくなってしまいました。。 この辺の数字には「+9」を書いたんですが、全く歯が立たずでした・・・ getHours()+9が一番惜しかった(気がするだけ?)のですが、 12時間の計算がおかしなことになりダメでした。。
お礼
お世話になっています。 ありがとうございます。 ここに載せていただきました参考URLで解決できました! さらにハックの話まであったようで・・・汗 ということで、少し書き方を変えました。 本当に何度もありがとうございました!!