我希望对于经常编写用户宏以进行汇合的人来说,这应该是一个简单的问题。
我只是想在页面上显示一年中的一周。我创建了具有常用元数据的用户宏,并包含以下内容以仅显示当前的当前日期:
## @noparams
<div>$content.currentDate</div>
汇合的版本是5.9.8,我搜索了documentation,试图找到&#39; currentDate&#39;的任何方法。属性,但没有记录,currentDate字段甚至存在于ContentEntityObject($ content)上。我曾尝试使用&#39; $ content.currentDate.get(3)&#39;因为我相信Java会返回一年中的一周,但Confluence只会将整个块呈现为纯文本。
答案 0 :(得分:0)
访问Java对象的速度可能会变得棘手。
理论上,如果你能够访问SimpleDateFormat
,你会做这样的事情......
@noparams
#set( $dow = new SimpleDateFormat("EEEE").format($content.currentDate()) )
<div>$dow</div>
但遗憾的是,SimpleDateFormat
无法通过速度轻松访问。
如果客户端渲染是可以接受的,那么它就更容易了 - 只需滚动自己的JavaScript:
@noparams
<div class="dow"></div>
<script>
(function() {
var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
Date.prototype.getDayName = function() {
return days[ this.getDay() ];
};
})();
AJS.toInit(function ($) {
$('.dow').text( (new Date()).getDayName() );
});
</script>
答案 1 :(得分:0)
基于@dvdsmpsn提供的内容,我的宏目前看起来像这样:
## @noparams
<div id='weeknumber'></div>
<script>
function getWeekNumber(d) {
d.setHours(0,0,0,0);
d.setDate(d.getDate() + 4 - (d.getDay()||7));
var yearStart = new Date(d.getFullYear(),0,1);
var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7);
return weekNo;
}
AJS.toInit(function ($) {
$('#weeknumber').text(getWeekNumber(new Date()));
});
</script>
有一些麻烦: