日历

/*日历组件*/
/**
 * 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;

 

转载于:https://www.cnblogs.com/webqiand/articles/11250591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值