我尝试使用moment.js显示这两周的日子。
我使用法语区域设置来显示这样的日子:
使用
设置head.js语言环境后<script>
moment.locale('fr');
</script>
下面的函数使用正确的日期构建了一个数组(在法国语言环境中设置的星期一开始),但是我没有以我想要的格式成功显示这些日子。
function thisFortnight() {
var startFortnight = moment().startOf('week');
var endFortnight = startFortnight.clone().add(13, 'd');
var days = []
var day = startFortnight;
while (day <= endFortnight) {
days.push(day.toDate());
day = day.clone().add(1, 'd');
}
var eDisplayMoment = document.getElementById('Fortnight');
eDisplayMoment.innerHTML = days;
}
输出:
2017年3月13日星期一00:00:00 GMT + 0100(CET),2017年3月14日星期二00:00:00 GMT + 0100(CET),2017年3月15日星期三00:00:00 GMT + 0100(CET) ,2017年3月16日星期五00:00:00 GMT + 0100(CET),2017年3月17日星期五00:00:00 GMT + 0100(CET),2017年3月18日星期六00:00:00 GMT + 0100(CET),Sun 2017年3月19日00:00:00 GMT + 0100(CET),2017年3月20日00:00:00 GMT + 0100(CET),2017年3月21日星期二00:00:00 GMT + 0100(CET),3月22日星期三2017 00:00:00 GMT + 0100(CET),2017年3月23日星期四00:00:00 GMT + 0100(CET),2017年3月24日星期五00:00:00 GMT + 0100(CET),2017年3月25日星期六00 :00:00 GMT + 0100(CET),2017年3月26日00:00:00 GMT + 0100(CET)
它应该是: lundi 13/3,mardi 14/3,mercredi 15/3等。
我用.format(&#39; dddd D / M&#39;)尝试了很多解决方案,但没有成功。
感谢您的帮助
答案 0 :(得分:0)
day.toDate()
返回本机JS日期,您希望使用时刻对象,因此请使用day.format('dddd D/M')
。
e.g。
var d = new moment();
console.log(d.format('dddd D/M'))
function thisFortnight() {
var startFortnight = moment().startOf('week');
var endFortnight = startFortnight.clone().add(13, 'd');
var days = []
var day = startFortnight;
while (day <= endFortnight) {
days.push(day.format('dddd D/M'));
day = day.clone().add(1, 'd');
}
var eDisplayMoment = document.getElementById('Fortnight');
eDisplayMoment.innerHTML = days.join('<br>');
}
window.onload = thisFortnight;
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/locale/fr.js"></script>
<div id="Fortnight"></div>
&#13;