首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修改一个临时日历,使周从用户指定的一天开始?

如何修改一个临时日历,使周从用户指定的一天开始?
EN

Stack Overflow用户
提问于 2018-02-16 09:49:22
回答 1查看 1K关注 0票数 0

我正在用AngularJS 1.5编写一个应用程序。我正在使用momentJS库作为约会/时间。

我做了一个日历。

我是通过确定一个月的ISO周数,然后用ISO周中的7天填写每周来制定日历的。

我想这样做,这样我就可以展示前一个月和下个月的几天了。

它的工作很好,但现在我的任务是用户能够配置一周的开始一天(例如,星期一,太阳或星期六)。

我不确定我是否还能用这些ISO周来完成我的任务。我希望它独立于地区/语言。

这是我的JS小提琴:https://jsfiddle.net/aubz88/ge5q9z5t/9/#&togetherjs=HzJkCK0BPy

下面是一个代码片段:

代码语言:javascript
复制
var data = {};
data.weeks = {};
data.currentCalendarMonth = moment().startOf('month');

buildMonth();

function buildMonth() {

    data.weeks = {};
    var startOfMonthISOWeek = data.currentCalendarMonth.clone().startOf('month').isoWeek();
    var endOfMonthISOWeek = data.currentCalendarMonth.clone().endOf('month').isoWeek();

    for (var i = startOfMonthISOWeek; i < endOfMonthISOWeek + 1; i++) {
        data.weeks[i] = [];
        buildWeek(i);
    }
}

function buildWeek(isoWeekNumber) {

    var start = moment().year(data.currentCalendarMonth.get('year')).week(isoWeekNumber).startOf('isoweek');
    var firstDayOfTheWeek = start.clone();

    for (var i = 0; i < 7; i++) {

        var day = firstDayOfTheWeek.clone().startOf('day').add(i, 'days');

        data.weeks[isoWeekNumber].push({
            date: day.get('date'),
            month: day.get('month'),
            year: day.get('year'),
            day: day
        });
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-16 10:06:32

您可以简单地使用week()、ans、startOf('week')而不是isoWeek()startOf('week')

week()

获取或设置一年中的一周。 由于不同的地区对年份周的定义不同,Moment.js添加了moment#week来获取/设置一年中的本地化周。 一年中的哪一周取决于哪一天是一周的第一天(星期日、星期一等),哪一周是一年中的第一周。

这样,您的日历将取决于地区。您可以使用updateLocale方法自定义一周的第一天(针对当前的地区),只需更改week对象的dow (day of week)键(如果需要的话也要更改doy键)的值即可。请参阅文档的自定义部分,以获取有关地区定制的更多信息。

如果需要,还可以定义一个伪区域

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48824010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档