File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 9292 {% if latest_commit_info %}
9393 < p class ="text-right "> < small >
9494 最終更新日時:
95- < span itemprop ="datePublished " content ="{{ latest_commit_info['last_updated'].strftime('%Y-%m-%dT%H:%M:%S%z') }} ">
95+ < time itemprop ="datePublished " class ="js-local-time "
96+ datetime ="{{ latest_commit_info['last_updated'].isoformat() }} ">
9697 {{ latest_commit_info['last_updated'].strftime('%Y年%m月%d日 %H時%M分%S秒') }} (JST)
97- </ span >
98+ </ time >
9899 < br />
99100 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
100101 < span itemprop ="name "> {{ latest_commit_info['last_author'] }}</ span >
101102 </ span >
102103 が更新
103104 </ small > </ p >
105+ < script >
106+ ( function ( ) {
107+ // 最終更新日時を閲覧者のローカルタイムゾーンで表示し直す (issue #53 の正規化)。
108+ // JS が無効な環境ではサーバ生成の JST 表記がそのまま残る。
109+ function pad ( n ) { return ( n < 10 ? '0' : '' ) + n ; }
110+ var els = document . querySelectorAll ( 'time.js-local-time[datetime]' ) ;
111+ for ( var i = 0 ; i < els . length ; i ++ ) {
112+ var el = els [ i ] ;
113+ var d = new Date ( el . getAttribute ( 'datetime' ) ) ;
114+ if ( isNaN ( d . getTime ( ) ) ) { continue ; }
115+ var tz = '' ;
116+ try {
117+ var parts = new Intl . DateTimeFormat ( undefined , { timeZoneName : 'short' } ) . formatToParts ( d ) ;
118+ for ( var j = 0 ; j < parts . length ; j ++ ) {
119+ if ( parts [ j ] . type === 'timeZoneName' ) { tz = parts [ j ] . value ; break ; }
120+ }
121+ } catch ( e ) { }
122+ el . textContent = d . getFullYear ( ) + '年' + pad ( d . getMonth ( ) + 1 ) + '月' + pad ( d . getDate ( ) ) + '日 '
123+ + pad ( d . getHours ( ) ) + '時' + pad ( d . getMinutes ( ) ) + '分' + pad ( d . getSeconds ( ) ) + '秒'
124+ + ( tz ? ' (' + tz + ')' : '' ) ;
125+ }
126+ } ) ( ) ;
127+ </ script >
104128 {% endif %}
105129{% endblock %}
106130
Original file line number Diff line number Diff line change 102102 {% if latest_commit_info %}
103103 < p class ="text-right "> < small >
104104 最終更新日時:
105- < span itemprop ="datePublished " content ="{{ latest_commit_info['last_updated'].strftime('%Y-%m-%dT%H:%M:%S%z') }} ">
105+ < time itemprop ="datePublished " class ="js-local-time "
106+ datetime ="{{ latest_commit_info['last_updated'].isoformat() }} ">
106107 {{ latest_commit_info['last_updated'].strftime('%Y年%m月%d日 %H時%M分%S秒') }} (JST)
107- </ span >
108+ </ time >
108109 < br />
109110 < span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
110111 < span itemprop ="name "> {{ latest_commit_info['last_author'] }}</ span >
111112 </ span >
112113 が更新
113114 </ small > </ p >
115+ < script >
116+ ( function ( ) {
117+ // 最終更新日時を閲覧者のローカルタイムゾーンで表示し直す (issue #53 の正規化)。
118+ // JS が無効な環境ではサーバ生成の JST 表記がそのまま残る。
119+ function pad ( n ) { return ( n < 10 ? '0' : '' ) + n ; }
120+ var els = document . querySelectorAll ( 'time.js-local-time[datetime]' ) ;
121+ for ( var i = 0 ; i < els . length ; i ++ ) {
122+ var el = els [ i ] ;
123+ var d = new Date ( el . getAttribute ( 'datetime' ) ) ;
124+ if ( isNaN ( d . getTime ( ) ) ) { continue ; }
125+ var tz = '' ;
126+ try {
127+ var parts = new Intl . DateTimeFormat ( undefined , { timeZoneName : 'short' } ) . formatToParts ( d ) ;
128+ for ( var j = 0 ; j < parts . length ; j ++ ) {
129+ if ( parts [ j ] . type === 'timeZoneName' ) { tz = parts [ j ] . value ; break ; }
130+ }
131+ } catch ( e ) { }
132+ el . textContent = d . getFullYear ( ) + '年' + pad ( d . getMonth ( ) + 1 ) + '月' + pad ( d . getDate ( ) ) + '日 '
133+ + pad ( d . getHours ( ) ) + '時' + pad ( d . getMinutes ( ) ) + '分' + pad ( d . getSeconds ( ) ) + '秒'
134+ + ( tz ? ' (' + tz + ')' : '' ) ;
135+ }
136+ } ) ( ) ;
137+ </ script >
114138 {% endif %}
115139{% endblock %}
116140
You can’t perform that action at this time.
0 commit comments