我有一个XLSForm,用于收集调查数据。 我有日期,因此当用户选择日期时,年份将被高压灭菌并显示为“ 18,0r 19”,表示2018或2019(取决于所选日期)。月份也会从所选日期自动生成。 我想从xlsForm中的选定日期自动生成星期数 在ODK中使用? 例如当我选择2018年10月5日1-7日时。我想自动看到此信息: 年是18,月是10月,周是10月的第1周。
答案 0 :(得分:0)
将有两种可能的计算。看一看日历。
你是否认为,第三天为第一周或第二周?
如果您认为它属于第一周,此功能将解决您的问题:
function getWeekNumberTypeA(dateStr, dateFormat) {
var date = moment(dateStr, dateFormat);
var day = date.date()
return Math.ceil(day / 7)
}
但是,如果您认为它属于第二周,那么以下功能将解决您的问题:
function getWeekNumberTypeB(dateStr, dateFormat) {
var date = moment(dateStr, dateFormat).toDate();
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
var dateBefore = moment(dateStr, dateFormat).toDate();
dateBefore.setDate(1); // going to 1st of the month
dateBefore.setHours(-1); // going to last hour before this date even started.
var dateBeforeWeek = moment(dateBefore).week();
var dateFirstDayWeek = moment(firstDay).week();
var dateWeek = moment(date).week();
if (dateFirstDayWeek == dateBeforeWeek) {
return dateWeek - dateFirstDayWeek + 1
} else {
return dateWeek - dateFirstDayWeek
}
}
这两个函数都接收日期字符串和日期格式。这两个函数还需要moment js library
您在这里得到了一些结果:
getWeekNumberTypeA("02-04-2019", "MM-DD-YYYY")
result: 1
getWeekNumberTypeB("02-04-2019", "MM-DD-YYYY")
result: 2
getWeekNumberTypeA("02-28-2019", "MM-DD-YYYY")
result: 4
getWeekNumberTypeB("02-28-2019", "MM-DD-YYYY")
result: 5