twitterをHTMLサイトに埋め込むために
「Add Twitter to your blog」
というJavaScriptで書かれたものを使用しているのですが、
表示時間が日本時間ではなくアメリカのどこかの時間(?)で表示されてしまいます。
9時間ズレです。
これを修正しようとしたのですが、上手いことできません。
どこを修正すればよいのかご教授願います。
時間に関係していると思われる部分のソースを載せます。
-----ここから-----
function relative_time(time_value) {
var values = time_value.split(" "),
parsed_date = Date.parse(values[1] + " " + values[2] + ", " + values[5] + " " + values[3]),
date = new Date(parsed_date),
relative_to = (arguments.length > 1) ? arguments[1] : new Date(),
delta = parseInt((relative_to.getTime() - parsed_date) / 1000),
r = '';
function formatTime(date) {
var hour = date.getHours(),
min = date.getMinutes() + "",
ampm = 'AM';
if (hour == 0) {
hour = 12;
} else if (hour == 12) {
ampm = 'PM';
} else if (hour > 12) {
hour -= 12;
ampm = 'PM';
}
if (min.length == 1) {
min = '0' + min;
}
return hour + ':' + min + ' ' + ampm;
}
function formatDate(date) {
var ds = date.toDateString().split(/ /),
mon = monthDict[date.getMonth()],
day = date.getDate()+'',
dayi = parseInt(day),
year = date.getFullYear(),
thisyear = (new Date()).getFullYear(),
th = 'th';
// anti-'th' - but don't do the 11th, 12th or 13th
if ((dayi % 10) == 1 && day.substr(0, 1) != '1') {
th = 'st';
} else if ((dayi % 10) == 2 && day.substr(0, 1) != '1') {
th = 'nd';
} else if ((dayi % 10) == 3 && day.substr(0, 1) != '1') {
th = 'rd';
}
if (day.substr(0, 1) == '0') {
day = day.substr(1);
}
return mon + ' ' + day + th + (thisyear != year ? ', ' + year : '');
}
delta = delta + (relative_to.getTimezoneOffset() * 60);
if (delta < 5) {
r = 'less than 5 seconds ago';
} else if (delta < 30) {
r = 'half a minute ago';
} else if (delta < 60) {
r = 'less than a minute ago';
} else if (delta < 120) {
r = '1 minute ago';
} else if (delta < (45*60)) {
r = (parseInt(delta / 60)).toString() + ' minutes ago';
} else if (delta < (2*90*60)) { // 2* because sometimes read 1 hours ago
r = 'about 1 hour ago';
} else if (delta < (24*60*60)) {
r = 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
} else {
if (delta < (48*60*60)) {
r = formatTime(date) + ' yesterday';
} else {
r = formatTime(date) + ' ' + formatDate(date);
// r = (parseInt(delta / 86400)).toString() + ' days ago';
}
}
-----ここまで-----
以下は、「Add Twitter to your blog」を配布しているサイトです。
http://remysharp.com/2007/05/18/add-twitter-to-y …
よろしくお願いいたします。
No.6ベストアンサー
- 回答日時:
お世話になっています。
ありがとうございます。
ここに載せていただきました参考URLで解決できました!
さらにハックの話まであったようで・・・汗
ということで、少し書き方を変えました。
本当に何度もありがとうございました!!
No.5
- 回答日時:
#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
No.4
- 回答日時:
#2・#3さんの情報でふと思ったのですが・・・
delta =
で始まる何処かの行に「+32400」を入れてみる。
9(時間)x60(分)x60(秒)= 32400(秒)です。
getTimezoneOffset()か、getTime()あたりの行・・・
グリニッジ標準時を取得している所に入れれば良いかと・・・
推測ですので、混乱したら無視して下さい。 m(_ _)m
この回答への補足
お世話になっています。
> delta =
> で始まる何処かの行に「+32400」を入れてみる。
> 9(時間)x60(分)x60(秒)= 32400(秒)です。
> getTimezoneOffset()か、getTime()あたりの行・・・
気になったところすべてに入れてみましたがダメでした。。
No.3
- 回答日時:
<9時間ズレです。
>なら、アメリカのどこかの時間でなくて、わざわざ、グリニッジ標準時に直しているようです。
ソースをざっと見たところ
delta = delta + (relative_to.getTimezoneOffset() * 60);
の部分が、現地時間との差を秒で算出しているところみたいなので、
現地時間との差を0秒となるように。
delta = delta;
と直すだけでは....
この回答への補足
早速のご回答ありがとうございます。
> delta = delta;
> と直すだけでは....
仰せのように書きなおしてみましたがダメでした。。
ソースすべてを書きたいのですが、長すぎて投稿することができません。。。
No.2
- 回答日時:
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 …
// 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);
}
}
No.1
- 回答日時:
グリニッジ標準時で、表示されている物と思われます。
何処かで誤差の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時間の計算がおかしなことになりダメでした。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascriptでexcel閉じる
-
【JavaScript】ソースのコメン...
-
PHPでエスケープされた文字列を...
-
テキストファイルの更新日時を取得
-
Javascriptエラーの原因が分か...
-
フォルダを自動で開く
-
助けてください!スパムメール...
-
以下のコードを実行しても、オ...
-
DocumentCompletedが複数回発生...
-
JavaScriptで ブラウザの閉じる...
-
条件に一致しない行を全て削除...
-
VB.NET2003 テキストボックスに...
-
CreateFile、CloseHandleの繰り...
-
Session切れ前にWarningメッセージ
-
Access VBAで、数字だけをチェ...
-
VBA ステータスバー DoEvents
-
htmlのfileタグに自動で値を入...
-
if(1){...}とはどういうことで...
-
JSPの処理の途中で、JavaScript...
-
デザイン時のVisible=Falseは実...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【JavaScript】ソースのコメン...
-
javascriptでexcel閉じる
-
リロードしないと正常に表示さ...
-
リアルタイム時計をミリ秒まで...
-
WebページまたはHTMLソースから...
-
文字列圧縮_
-
javascriptで文字コード変更
-
変換テーブルを使った、文字列...
-
コメント削除/圧縮/難読化
-
Javascriptで特殊文字を置換す...
-
六曜カレンダー
-
Java Script を.jsファイルを利...
-
WSH をC#で作ることは可能でし...
-
サンプルソースを記述するTEXTA...
-
右クリックができないようにし...
-
拡大スクリプト・zoom_ブック...
-
PHPでエスケープされた文字列を...
-
MTでjQuery、プルダウンメニュ...
-
ホームページの作成について
-
javascriptプログラムを日本時...
おすすめ情報