Skip to content

Commit 986d479

Browse files
committed
releases 3.7.0
1 parent e2c003c commit 986d479

File tree

5 files changed

+667
-65
lines changed

5 files changed

+667
-65
lines changed

func/getMonthWeek.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ var helperCreateGetDateWeek = require('./helperCreateGetDateWeek')
99
*/
1010
var getMonthWeek = helperCreateGetDateWeek(function (targetDate) {
1111
return new Date(targetDate.getFullYear(), targetDate.getMonth(), 1)
12+
}, function (date1, date2) {
13+
return date1.getMonth() !== date2.getMonth()
1214
})
1315

1416
module.exports = getMonthWeek

func/getYearWeek.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ var helperCreateGetDateWeek = require('./helperCreateGetDateWeek')
99
*/
1010
var getYearWeek = helperCreateGetDateWeek(function (targetDate) {
1111
return new Date(targetDate.getFullYear(), 0, 1)
12+
}, function (date1, date2) {
13+
return date1.getFullYear() !== date2.getFullYear()
1214
})
1315

1416
module.exports = getYearWeek

func/helperCreateGetDateWeek.js

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,66 @@
11
var setupDefaults = require('./setupDefaults')
22

3+
var staticDayTime = require('./staticDayTime')
34
var staticWeekTime = require('./staticWeekTime')
45

56
var isNumber = require('./isNumber')
7+
var includes = require('./includes')
8+
var toStringDate = require('./toStringDate')
69
var isValidDate = require('./isValidDate')
710
var getWhatWeek = require('./getWhatWeek')
11+
var range = require('./range')
12+
var map = require('./map')
813

914
var helperGetDateTime = require('./helperGetDateTime')
1015

11-
function helperCreateGetDateWeek (getStartDate) {
16+
var nextStartMaps = map(range(0, 7), function (day) {
17+
return [(day + 1) % 7, (day + 2) % 7, (day + 3) % 7]
18+
})
19+
20+
function matchWeekStartDay (time, viewStartDay) {
21+
var day = new Date(time).getDay()
22+
return includes(nextStartMaps[viewStartDay], day)
23+
}
24+
25+
function helperCreateGetDateWeek (getStartDate, checkCrossDate) {
1226
return function (date, firstDay) {
1327
var viewStartDay = isNumber(firstDay) ? firstDay : setupDefaults.firstDayOfWeek
14-
var targetDate = getWhatWeek(date, 0, viewStartDay, viewStartDay)
28+
var targetDate = toStringDate(date)
1529
if (isValidDate(targetDate)) {
16-
var targetOffsetDate = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate())
17-
var targerStartDate = getStartDate(targetDate)
18-
var targetFirstDay = targerStartDate.getDay()
19-
if (targetFirstDay > viewStartDay) {
20-
targerStartDate.setDate(7 - targetFirstDay + viewStartDay + 1)
30+
var targetWeekStartDate = getWhatWeek(targetDate, 0, viewStartDay, viewStartDay)
31+
var firstDate = getStartDate(targetWeekStartDate)
32+
var firstTime = helperGetDateTime(firstDate)
33+
var targetWeekStartTime = helperGetDateTime(targetWeekStartDate)
34+
var targetWeekEndTime = targetWeekStartTime + staticDayTime * 6
35+
var targetWeekEndDate = new Date(targetWeekEndTime)
36+
var firstWeekStartDate = getWhatWeek(firstDate, 0, viewStartDay, viewStartDay)
37+
var firstWeekStartTime = helperGetDateTime(firstWeekStartDate)
38+
var tempTime
39+
if (targetWeekStartTime === firstWeekStartTime) {
40+
return 1
41+
}
42+
if (checkCrossDate(targetWeekStartDate, targetWeekEndDate)) {
43+
tempTime = helperGetDateTime(getStartDate(targetWeekEndDate))
44+
for (; tempTime < targetWeekEndTime; tempTime += staticDayTime) {
45+
if (matchWeekStartDay(tempTime, viewStartDay)) {
46+
return 1
47+
}
48+
}
2149
}
22-
if (targetFirstDay < viewStartDay) {
23-
targerStartDate.setDate(viewStartDay - targetFirstDay + 1)
50+
var firstWeekEndTime = firstWeekStartTime + staticDayTime * 6
51+
var firstWeekEndDate = new Date(targetWeekEndTime)
52+
var offsetNum = 1
53+
if (checkCrossDate(firstWeekStartDate, firstWeekEndDate)) {
54+
offsetNum = 0
55+
tempTime = firstTime
56+
for (; tempTime < firstWeekEndTime; tempTime += staticDayTime) {
57+
if (matchWeekStartDay(tempTime, viewStartDay)) {
58+
offsetNum++
59+
break
60+
}
61+
}
2462
}
25-
return Math.floor((helperGetDateTime(targetOffsetDate) - helperGetDateTime(targerStartDate)) / staticWeekTime + 1)
63+
return Math.floor((targetWeekStartTime - firstWeekStartTime) / staticWeekTime) + offsetNum
2664
}
2765
return NaN
2866
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "xe-utils",
3-
"version": "3.6.0",
3+
"version": "3.7.0",
44
"description": "JavaScript 函数库、工具类",
55
"main": "index.js",
66
"unpkg": "dist/xe-utils.umd.min.js",

0 commit comments

Comments
 (0)