3 回答
- 210
この内容は非サポートですが、回避することは可能です。
問題点は、各ブラウザのJavaScript(Dateオブジェクト)の挙動が異なる点にあります...
JIRAが使っているJavaScriptライブラリは以下に配置されています。
(JIRAインストールディレクトリ)/atlassian-jira/includes/lib/calendar
- Calendar.js
- Calendar-min.js (圧縮済み)
733 // try to parse the current date/time in ISO8601 format 734 if (this.dateStr) { 735 this.date = new Date(this.dateStr); 736 } 737 738 // fall back to date/time in browser time zone if necessary 739 if (!this.date || isNaN(this.date)) { 740 this.date = new Date(); 741 }
735行目付近が問題です。
this.dateStr の文字列は、JIRAのJava側で生成しているのですが...細かいことは
jira-project/jira-components/jira-core/src/main/resources/templates/plugins/jira/macros.vm
あたりのソースコードを見てください。
言語設定が日本語の場合、以下日時のフォーマットで返却されます。
木, 3 9 2015 14:46:47
このフォーマットをJavaScript側で操作しています。
ですが、各ブラウザのConsoleで以下を実行していただければわかりますが...
new Date('木, 3 9 2015 14:46:47');
IE、Firefox は Invalid Date が返却されるのですが
Chromeだけ
Mon Mar
09
2015
14
:
46
:
47
GMT+
0900
(東京 (標準時)) で返却されます。
これが問題を引き起こしています..
回避策
Calendar.js の 733行目~736行目付近のif文をコメントアウトしてください。
738行目以降の処理で、現在時刻(但しJavaScriptのためクライアントのPC時刻になります)が問題なく設定されます。
# cd (インストールディレクトリ)/atlassian-jira/includes/lib/calendar # vim Calendar.js ← 修正 if(this.dateStr){this.date=new Date(this.dateStr)} をコメントアウト # vim Calendar-min.js ← 修正 if(this.dateStr){this.date=new Date(this.dateStr)} を削除 # /sbin/service jira stop # /sbin/service jira start
JIRAの再起動が必要です。
ご参考になりましたら幸いです。
コメントを追加... - 10-1
こちらの課題で修正されたようです。JIRA 7.x 以上であればなおっているはず。
JRASERVER-40246 Date Picker inverts date and month when using Japanese with Chrome
コメントを追加... - 10-1
助かる~!
コメントを追加...
ChromeでJIRAを使っています。
課題作成時に、日付ピッカー(期限など)でカレンダーが表示されますが、初期表示が逆転します。
例えば、9/3 だと、3/9 に表示されます。
IEやFirefoxだと問題ありません。Chromeでも、JIRAの言語設定が英語だと問題ありません。
Atlassianサポートに確認したところ、以下不具合だと伝えられました。
JRA-38643 Date picker chooses incorrect default date in Chrome browser when user profile language is Japanese - Atlassian JIRA
カレンダーウィンドウを開き、「今日」ボタンを押下すれば、当日にはなりますが...イケテマセン。
何か回避策はないものでしょうか....