Help‐ノート:UTCの時刻を地方時で表示する

ページのコンテンツが他言語でサポートされていません。

バグ: 差分が多く計算される[編集]

UTC+0:00以上のタイムゾーンで、日数差分表示が前後にかかわらず1日多くなります。原因は特定しているのでいずれ直します。--cpro 2009年8月28日 (金) 11:19 (UTC)[返信]

夏時間を導入している地域のみ夏時間を補正されるようです。Windows XP の場合、日付と時刻のプロパティで
  1. 「(GMT) グリニッジ標準時:ダブリン、エジンバラ、リスボン、ロンドン」を選択
    •  「☑自動的に夏時間の調整をする」の場合 (UTC+1)
    •  「☐自動的に夏時間の調整をする」の場合 (UTC+0)
  2. 「(GMT) カサブランカ」を選択
    •  チェックボックスの状態に関わらず (UTC+0) と表記される
MAC等他のプラットフォームでは未確認ですが、取りあえずにはサマータイム時の説明を追加するだけで、現状のままでよいのではないでしょうか? --Lemonsquash 2009年8月31日 (月) 05:59 (UTC)[返信]
あ、いえ、夏時間は関係ないというか、夏時間も含めてTZがUTC+0以上(JST=UTC+9とか)だと、「3日前」とかの差分表示が1日多く計算されてしまうのです。Date オブジェクトのUTCとローカル時の扱いがとっちらかってるのが原因です。--cpro 2009年8月31日 (月) 06:25 (UTC)[返信]
修正しました。--cpro 2009年9月9日 (水) 06:03 (UTC)[返信]

機能拡張依頼その1[編集]

旧日付形式 「HH:MM YYYY年M月D日 (UTC)」 への対応をお願いいたします。 2004年6月頃までの著名で使われていました。

参考:Wikipedia:井戸端/過去ログ/2004年6月

次の構文

if(element_id)
	replace_text(document.getElementById(element_id), /(\d{4})年(\d{1,2})月(\d{1,2})日 \([日月火水木金土]\) (\d\d):(\d\d) \(UTC\)/g, adjust_time);

if(element_id) {
	replace_text(document.getElementById(element_id), /(\d{1,2}):(\d{1,2})\s+(\d{4})年(\d{1,2})月(\d{1,2})日\s*\(UTC\)/g, adjust_time2);
	replace_text(document.getElementById(element_id), /(\d{4})年(\d{1,2})月(\d{1,2})日 \([日月火水木金土]\) (\d\d):(\d\d) \(UTC\)/g, adjust_time);
}

とした上で、次の関数

function adjust_time2(original_timestamp, old_hour, old_minute, old_year, old_month, old_day, offset)
{
	return adjust_time(original_timestamp, old_year, old_month, old_day, old_hour, old_minute, offset);
}

を追加すれば大丈夫なはずです。--Lemonsquash 2009年8月31日 (月) 05:59 (UTC)[返信]

了解です。上記の修正と一緒に適用します。--cpro 2009年8月31日 (月) 06:25 (UTC)[返信]
全ノード探索を繰り返して重くなるのは避けたかったので、正規表現とそれを受ける引数をいじることで対応しました。--cpro 2009年9月9日 (水) 06:03 (UTC)[返信]

2009-09-09T05:49:39 修正[編集]

2009年9月9日 (水) 05:49 (UTC) の編集で以下の修正を実施しました。

  1. 同一テキストノードに複数の日付が出現すると、最初のものしか変換されない問題の修正。投票期間表示などで発生していました。
  2. 上記 #バグ: 差分が多く計算される節に示した、タイムゾーンのオフセットが正のとき日数差分が +1 されるバグの修正。
  3. 上記 #機能拡張依頼その1 節の、旧形式の日付への対応。

問題があればお知らせください。--cpro 2009年9月9日 (水) 06:03 (UTC)[返信]

差分算出アルゴリズム改善[編集]

現在の差分算出方法は、大雑把には以下のようになっています。

  1. 日付同士の差を日数で取得する
  2. 日数から1引いた分だけ、0年1月1日から経過させる
    • たとえば40日差があれば、0年2月9日
  3. 結果の日付を見て、年・月-1・日を、そのまま「x年xか月とx日前(後)」と表示する
    • 上の例では、0年1か月と9日前

手っ取り早い実装ではありますが、n年ちょうど前・nか月ちょうど前が表現できませんし、たとえば2か月前の同日は最大で「2か月と3日前」と表示されるなど直感にも反します。

以下メモ。

function getDateDiff(dateA, dateB) {
	if(dateA < dateB) { //swap
		var buff = dateA;
		dateA = dateB;
		dateB = buff;
	}
	dateA = new Date(dateA.getFullYear(), dateA.getMonth(), dateA.getDate());
	dateB = new Date(dateB.getFullYear(), dateB.getMonth(), dateB.getDate());
	
	var yearDiff = dateA.getFullYear() - dateB.getFullYear();
	var monthDiff = dateA.getMonth() - dateB.getMonth();
	var dateDiff = dateA.getDate() - dateB.getDate();
	if(dateDiff < 0) {
		monthDiff -= 1;
		var msDiff = dateA.valueOf() - new Date(dateA.getFullYear(), dateA.getMonth() - 1, dateB.getDate()).valueOf();
		dateDiff = Math.round(msDiff / (1000 * 60 * 60 * 24));
	}
	if(monthDiff < 0) {
		yearDiff -= 1;
		monthDiff += 12;
	}
	
	return [yearDiff, monthDiff, dateDiff];
}

--cpro 2009年9月9日 (水) 10:37 (UTC)[返信]

「(JST)」表示のオプションと「本日」の表記について[編集]

このガジェットの前身の利用者:Lemonsquash/comments in local time(ja).jsの時から使わせていただいております。コメントがどれだけ前のものなのか一目で分かるので、議論を過去ログ化するときにとても役に立ちます。

前置きはさておき、利用者:Lemonsquash/comments in local time(ja).jsの時は「(UTC+9)」表示の代わりに「(JST)」と表示できるオプションがありましたが、このガジェットではなぜ無くなっているのでしょうか?

もうひとつ、「本日」の表記についてですが、「本日」の表現は少し硬い印象を受けます。普通に「今日」で良いのではないでしょうか?--Widehawk 2010年2月12日 (金) 17:55 (UTC)[返信]

(JST)にするオプションはLemonsquashさんのオリジナルで、私はLemonsquashさんのものに気付かず独自にローカライズしてしまったので、無くなったというかそもそも用意していなかったりします。あると便利そうなので時間を見て実装しようと思います。「本日」「今日」については私は「本日」の方が好みですが、こだわるわけではないので「今日」がいいという方が多くいらっしゃるようなら変更は拒みません。--cpro 2010年2月13日 (土) 04:57 (UTC)[返信]

「本日」「昨日」などの相対表示について[編集]

上の話題とは少し違う話なんですが、「本日」「昨日」などの部分を通常の日付表示には出来ないんでしょうか?普通に見ている分には問題ないのですが、編集上日付が表示されないのが少々不便です。出来れば「2010年3月17日 (水)(本日) 1:26 am (JST)」みたいな表示に出来れば最高なんですが。--Win51 2010年3月16日 (火) 16:26 (UTC)[返信]

ガジェットの作用を局所的に停止することはできるか[編集]

ガジェットいつも便利に使わせてもらってます。ありがとうございます。ところで私は今、{{User_information_templates}}などの署名の説明ページを編集しているのですが、このガジェットをONにしておくと、テンプレートの使用例中の日付が自動で置換されてしまいます。

つまり

{{unsigned-IPuser|255.255.255.255|2010年5月1日 (日) 01:46 (UTC)|~~~}}

のように表示させたいのですが(これは1日が1日(全角の1)になっているのでガジェットが効きません)、ふつうに書くと以下のようになります(ガジェットが有効化されている人には○日前という文が表示されるはずです)

{{unsigned-IPuser|255.255.255.255|2010年5月1日 (日) 01:46 (UTC)|~~~}}

<pre>..</pre>や<code>..</code>で挟んだりしてみたのですが、何も変わりません。そこで何か局所的に無効化する方法はないかと思って質問させていただきました。--Was a bee 2010年8月1日 (日) 03:02 (UTC)[返信]

付け焼刃としては「2010年5月1日 (日) 01:46 (UTC)」といった風な修正を施すことになるのでしょうか。 --Frozen-mikan 2010年8月1日 (日) 05:23 (UTC)[返信]
Frozen-mikanさん、ありがとうございます。そういう方法がありましたか。まったく思い浮かびませんでした。ほんの数ページだけの事と思うので、その方法で対応してみようと思います(花)。--Was a bee 2010年8月1日 (日) 11:54 (UTC)[返信]

差分表示のときこのガジェットが働かないようにしてほしい[編集]

差分表示のページでこのガジェットが働かないようにしてほしいです。

URLに「&diff=」があるときに作動させないとかできないでしょうか。--Foomin10 2012年8月14日 (火) 21:57 (UTC)[返信]

バグ:極めて古い署名のフォーマットに対応していない[編集]

どうやら2004年ごろまでは署名に入る日付のフォーマットが "名前 HH:MM yyyy年m月d日 (UTC)" という形だったようで (cf. ノート:ウィキペディアの古い版),このガジェットを有効にしてこのような古い形の署名を見ると,例えば言語設定が英語だと

署名 NaN:NaN am, NaN undefined NaN, undefined( from now) (UTC−NaN)

というように表示されてしまいます.この形に遭遇する事態は稀とは思うので,対応する労力に見合うのかは微妙とは思うのですが,パースに失敗したかどうかをチェックして,NaNなら素直に諦めてくれた方が嬉しいと思います. --あるうぃんす会話2015年3月29日 (日) 03:28 (UTC)[返信]

コメント ご指摘の点についてスクリプトを調査した所、旧書式の日付についての解析は行われていました。スクリプトを微修正(244行目から248行目にある、空文字列との比較を undefined との比較に置換)することで改善したと思える動作になりました。2,3日ほど待って他に修正案が出ないようであれば適用しようと思います。--Frozen-mikan会話2015年3月30日 (月) 13:48 (UTC)[返信]
おお,早速ありがとうございます,丸投げみたいになっていてすみません.軽めの修正でできそうでよかったです.--あるうぃんす会話2015年4月1日 (水) 10:24 (UTC)[返信]
報告 修正を行いました[1]。事前申告とは異なりますが、以前の空文字列との比較についても残す形にしました。こちらの環境では上記の古い版で問題ないことが確認できていますが、環境によっては、挙動が変わるまでに、しばらく掛かるかもしれません。--Frozen-mikan会話2015年4月2日 (木) 18:37 (UTC)[返信]
上記 #機能拡張依頼その1 節で対応したつもりでいましたが、駄目だったみたいでお手数をお掛けしました。ありがとうございます。--cpro会話2015年4月3日 (金) 00:10 (UTC)[返信]

差分表示無効化が反映されない[編集]

利用者ページのcommon.jsに

LocalComments = {
	language: 'ja',
	dateDifference: false,
	twentyFourHours: true
};

の入力をしていますが、「○○」日前の表示が出ることがあります。その状態でページを更新すると消えるのですが、別のページに遷移した時など、気がついたらまた出てきてしまいます。なにかこちらに原因があるのでしょうか?--Takumiboo(会話) 2016年8月17日 (水) 02:43 (UTC)[返信]

表記がおかしい?[編集]

このガジェットですが、投稿日時の UTC の時間が JST (UTC+9) の時間の前日で、それが本日である場合に表記がおかしくなっていませんか?現在の書いている途中の投稿時間が 2016年9月19日 (月) 15:50 (UTC) ですが、本日 12:50 am (UTC+9) と表示されます。本来は 本日 0:50 am (UTC+9) と表示されるべきでは? --Mzm5zbC3 () 2016年9月19日 (月) 15:50 (UTC)[返信]

すみません。午前と午後#正子と正午の時刻表現 を見ると 12:50 am という表記も正しいのでしょうか。こういう表記されると午前なのか午後なのか、0時なのか12時なのか分かりにくくなりますね。個人的には午後12時とか午前12時という言い方は違和感あるのですが(午前午後とつけるなら0時で、正午午後0時か単に12時というイメージがありますがよく考えると確かに真夜中の12時という言い方はしますね)。まあ、上記 午前と午後 にもある通りに24時間設定にすれば解消するんですけどね(デフォルトが12時間設定なのでいちいち設定変更するのも面倒ですし)。 --Mzm5zbC3 () 2016年9月19日 (月) 16:14 (UTC)[返信]
因みに、この表記だと 12時->1時->2時...->11時(am)->12時->1時...(pm)という感じになるのでしょうか(AM 12:00 の次が AM 1:00?) --Mzm5zbC3 () 2016年9月19日 (月) 16:14 (UTC)[返信]