获取当前周数 判断年份是否为润年 获取某年某月的天数 计算两个日期差几天 周获取对应的日期
计算环比日期
export function getWeekNumber ( y, m, d) {
var targetDay = new Date ( y, m - 1 , d) ;
var year = targetDay. getFullYear ( ) ;
var month = targetDay. getMonth ( ) ;
var days = targetDay. getDate ( ) ;
for ( var i = 1 ; i < m; i++ ) {
days += getMonthDays ( year, i) ;
}
var yearFirstDay = new Date ( year, 0 , 1 ) . getDay ( ) ;
days += yearFirstDay - 1 ;
var week = Math. ceil ( days / 7 ) ;
return week;
}
function isLeapYear ( year) {
return ( year % 400 == 0 ) || ( year % 4 == 0 && year % 100 != 0 ) ;
}
export function getMonthDays ( year, month) {
return [ 31 , ( isLeapYear ( year) ? 29 : 28 ) , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ] [ month - 1 ] ;
}
export function computation ( sDate1, sDate2) {
var aDate, oDate1, oDate2, iDays
aDate = sDate1. split ( "-" )
oDate1 = new Date ( aDate[ 1 ] + '-' + aDate[ 2 ] + '-' + aDate[ 0 ] )
aDate = sDate2. split ( "-" )
oDate2 = new Date ( aDate[ 1 ] + '-' + aDate[ 2 ] + '-' + aDate[ 0 ] )
iDays = parseInt ( Math. abs ( oDate1 - oDate2) / 1000 / 60 / 60 / 24 )
return iDays;
}
function yearDay ( long) {
var time = new Date ( long * 1000 )
var year = time. getFullYear ( ) ;
var month = ( time. getMonth ( ) + 1 ) < 10 ? '0' + ( time. getMonth ( ) + 1 ) : ( time. getMonth ( ) + 1 ) ;
var date = time. getDate ( ) < 10 ? '0' + time. getDate ( ) : time. getDate ( ) ;
var yearday = { year, month, date}
return yearday
}
export function whichWeek ( year) {
var d = new Date ( year, 0 , 1 ) ;
while ( d. getDay ( ) != 1 ) {
d. setDate ( d. getDate ( ) + 1 ) ;
}
let arr = [ ]
let longnum = d. setDate ( d. getDate ( ) )
if ( longnum > + new Date ( year, 0 , 1 ) ) {
let obj = yearDay ( + new Date ( year, 0 , 1 ) / 1000 )
obj. last = yearDay ( longnum / 1000 - 86400 )
arr. push ( obj)
}
let oneitem = yearDay ( longnum / 1000 )
oneitem. last = yearDay ( longnum / 1000 + 86400 * 6 )
arr. push ( oneitem)
var lastStr
for ( var i = 0 ; i< 51 ; i++ ) {
let long = d. setDate ( d. getDate ( ) + 7 )
let obj = yearDay ( long / 1000 )
obj. last = yearDay ( long / 1000 + 86400 * 6 )
lastStr = long + 86400000 * 6
arr. push ( obj)
}
if ( lastStr < + new Date ( year + 1 , 0 , 1 ) ) {
let obj = yearDay ( lastStr / 1000 + 86400 )
obj. last = yearDay ( + new Date ( year + 1 , 0 , 1 ) / 1000 - 86400 )
arr. push ( obj)
} else {
arr[ arr. length- 1 ] . last = yearDay ( + new Date ( year + 1 , 0 , 1 ) / 1000 - 86400 )
}
return arr
}
export function chainRatio ( time) {
let result = [ ] ;
let dayNum = ( new Date ( time[ 1 ] ) - new Date ( time[ 0 ] ) ) / 1000 / 3600 / 24 ;
let startDate = new Date ( time[ 0 ] ) ;
startDate = new Date ( startDate. getTime ( ) - ( 1000 * 3600 * 24 * dayNum) ) ;
startDate = startDate. getFullYear ( ) + "-" + ( startDate. getMonth ( ) + 1 ) + "-" + startDate. getDate ( ) ;
result. push ( startDate + " 00:00:00" ) ;
let endDate = new Date ( time[ 0 ] ) ;
endDate = new Date ( endDate. getTime ( ) - ( 1000 * 3600 * 24 * 1 ) ) ;
endDate = endDate. getFullYear ( ) + "-" + ( endDate. getMonth ( ) + 1 ) + "-" + endDate. getDate ( ) ;
result. push ( endDate + " 23:59:59" ) ;
return result;
}