/*日历组件*/
/**
* date: 日期 默认当前日期
* weekFirst:周首天 1:星期一 0:星期日
*/
import React, { Component } from 'react'
var Calendar = React.createClass({
getInitialState: function () {
return {
currentdate:{}, //当前日期集
}
},
componentWillMount :function(){
this.getDates()
},
/*获取选择的日期集*/
/**
* year: 当前年
* month: 当前月
* day: 当前天
* date: 当前日期
* lastDay :本月最后一天是几号
* parentLastDay:上月最后一天几号
* week:当前日期是星期几
* weekFirst :周首天 1:星期一 0:星期日 默认0
*/
getDates(){
const {date=getCurrentDate().date,weekFirst="0"}=this.props;
let {currentdate}=this.state;
currentdate=getCurrentDate(date);
currentdate.lastDay =parseInt(getLastDay(currentdate.year, currentdate.month)) //获取本月最后一天
currentdate.parentLastDay =parseInt(getLastDay(currentdate.year, parseInt(currentdate.month)-1)) //获取上月最后一天
currentdate.week=parseInt(getweek(date, 2)) //当前日期是星期几
currentdate.weekFirst=weekFirst ; //周首天是星期一还是星期日
currentdate.weekFirstDate=getfirstday(currentdate.weekFirst,currentdate.date,currentdate.week) //获取本周首日的日期
currentdate.parentWeekDate=getYestoday(currentdate.weekFirstDate)
console.log(currentdate)
this.setState({currentdate})
console.log(getNextday("2017-07-27",-1))
},
render:function () {
const {onChange=()=>{}, className=""}=this.props;
const {currentdate}=this.state;
return (
<section>
<article className={"calendar"+className}>
<div className="client_month white margint_1r borderb_1r fn-hide1">
<span className="monthico" id="parent"></span>
<span className="curryear" ref="currentYear">{currentdate.year+"年"}</span>
<span className="currmonth" ref="currentMonth">{changecapital(currentdate.month)+" 月"}</span>
<span className="monthico" id="next" ></span>
</div>
</article>
</section>
);
}
});
//获取日期 (为空则为当天时间)
const getCurrentDate = function (str="") {
var mydate =str==""?new Date():new Date(str);
var year = parseInt(mydate.getFullYear());
var month = addzerro(mydate.getMonth() + 1);
var day = addzerro(mydate.getDate());
var date = year + "-" + month + "-" + day;
var gettoday = {
"year": year,
"month": month,
"day": day,
"date": date,
}
return gettoday;
};
//加零
const addzerro=(str)=>{
if (parseInt(str) < 10) {
return "0" + parseInt(str);
}
else {
return parseInt(str);
}
}
//月份小写转大写
const changecapital=(str)=>{
var str2 = parseInt(str);
const moneyarry={1:"一", 2:"二", 3:"三", 4:"四", 5:"五", 6:"六", 7:"七", 8:"八", 9:"九", 10:"十", 11:"十一", 12:"十二"}
return moneyarry[str2];
}
/* 获取n天以前 默认7天前*/
function getYestoday(date="",str=7) {
var d = date==""?new Date():new Date(date);
var beforday=str*1000
var yesterday_milliseconds = d.getTime() - beforday * 60 * 60 * 24;
var yesterday = new Date();
yesterday.setTime(yesterday_milliseconds);
var strYear = yesterday.getFullYear();
var strDay = yesterday.getDate();
var strMonth = yesterday.getMonth() + 1;
var datastr = strYear + "-" + (strMonth < 10 ? '0' + strMonth : strMonth) + "-" + (strDay < 10 ? '0' + strDay : strDay);
return datastr;
}
/* 获取n天以后 默认7天后*/
function getNextday(date="",str=7) {
var d = date=""?new Date():new Date(date);
var beforday=str*1000
var yesterday_milliseconds = d.getTime() + beforday * 60 * 60 * 24;
var yesterday = new Date();
yesterday.setTime(yesterday_milliseconds);
var strYear = yesterday.getFullYear();
var strDay = yesterday.getDate();
var strMonth = yesterday.getMonth() + 1;
var datastr = strYear + "-" + (strMonth < 10 ? '0' + strMonth : strMonth) + "-" + (strDay < 10 ? '0' + strDay : strDay);
return datastr;
}
/* 获取当前星期的首日是几号 */
/**
* date: 日期 默认当前日期
* weekFirst:周首天 1:星期一 0:星期日
*/
const getfirstday=(weekfirst,date,week)=>{
const dayNum=weekfirst=="0"?parseInt(week)-0:parseInt(week)-1; //计算距离周首天的天数
const firstdate=getYestoday(date,dayNum)
return firstdate;
}
export default Calendar;