2016-10-25 4 views
1

MediaWikiのUTCLiveClock.jsで作業しており、PST/PDTに表示時間を設定するように設定しようとしています。私は問題を解決したと思ったが、UTCの真夜中(00:00:00)に時間が0-7:00:00に変更された。 UTC 00:00:00 - 07:00:00が発生すると、私の時間表示が混乱しないように正しく表示する必要があります。 mediawikiで使用しているガジェットはhttps://www.mediawiki.org/wiki/MediaWiki:Gadget-UTCLiveClock.jsMediawiki UTCLiveClockガジェットの設定

で見つけることができます。はい、私はnoobです。私は正式なプログラミングの知識を持っていません。私は、サーバーがPST/PDTに存在し、この問題に遭遇しているゲーム用のwikiを構築しようとしています。過去3時間のキーワード検索でグーグルが私をどこにも連れてこなかった。助けてください。

*/ 
/*global mw, $, UTCLiveClockConfig:true */ 
mw.loader.using(['mediawiki.util', 'mediawiki.api', 'mediawiki.notify']).then(function() { 
var $target; 

function showTime($target) { 
    var now = new Date(); 
    var hh = now.getUTCHours(); 
    var mm = now.getUTCMinutes(); 
    var ss = now.getUTCSeconds(); 
    var time = (hh < 10 ? '0' + hh : hh) + ':' + (mm < 10 ? '0' + mm : mm) + ':' + (ss < 10 ? '0' + ss : ss); 
    $target.text(time); 

    var ms = now.getUTCMilliseconds(); 

    setTimeout(function() { 
     showTime($target); 
    }, 1100 - ms); 
} 

function liveClock() { 
    mw.util.addCSS('#utcdate a { font-weight:bolder; font-size:120%; }'); 

    if (!window.UTCLiveClockConfig) { 
     UTCLiveClockConfig = {}; 
    } 
    var portletId = UTCLiveClockConfig.portletId || 'p-personal'; 
    var nextNode = UTCLiveClockConfig.nextNodeId ? document.getElementById(UTCLiveClockConfig.nextNodeId) : undefined; 
    var node = mw.util.addPortletLink(
     portletId, 
     mw.util.getUrl(null, { action: 'purge' }), 
     '', 
     'utcdate', 
     null, 
     null, 
     nextNode 
    ); 
    if (!node) { 
     return; 
    } 
    $(node).on('click', function (e) { 
     new mw.Api().post({ action: 'purge', titles: mw.config.get('wgPageName') }).then(function() { 
      location.reload(); 
     }, function() { 
      mw.notify('Purge failed', { type: 'error' }); 
     }); 
     e.preventDefault(); 
    }); 

    showTime($(node).find('a:first')); 
} 

$(liveClock); 
}); 

編集:

私はもともと問題が入れてある固定方法-7時間のセクションで:

var hh = now.getUTCHours()-7; 
+0

この「ガジェット」には、より良いリンクが必要です。あなたはどこからそれを手に入れますか? – Michas

+0

Mediawikiから直接 https://www.mediawiki.org/wiki/Extension:Gadgets 私の問題は、.jsを編集して別のタイムゾーンに適した方法についてのチュートリアルは全くありません。私は何も見つけることができません。 –

答えて

1

はそれ、これはUTCの時刻に限られ、非常に単純なガジェットです見えます。いくつかのオプションがあります。

  1. タイムゾーンをサポートするより優れたスクリプトを見つけます。
  2. これに基づいて独自のスクリプトを作成します。

独自のスクリプトを書くには、重要な部分があります。

function get_PST_PDT_offset() { 
    /* You have to rewrite this function from time to time. */ 
    var now = new Date(); 
    var change = new Date(2016, 11, 5, 19, 0); /* 2016-11-06 2:00 PST */ 
    if (now >= change) { 
     return -8; 
    } else { 
     return -7; 
    } 
} 

function showTime($target) { 
    var now = new Date(); 
    var hh = now.getUTCHours(); 
    var offset = get_PST_PDT_offset(); 
    hh = (hh + offset + 24) % 24; 
    var mm = now.getUTCMinutes(); 
    /* ... */ 
+0

ありがとうございます、あなたはそれが十分に簡単だと思われますが、私はいつも私が使用してきたすべてを一緒にフランケンシュテイングしています... .jsコードで自分自身が私はまだできているものではありません...そう私はマニュアルとチュートリアルを見てあきらめて、尋ねることに決めました。 –

+0

また、この回答は魅力的に働いた、私はあなたをupvotedしたが、私の代理人は何のために公にカウントするには低すぎるが、私の深い感謝はそこにあります –

関連する問題