分享3个php获取日历的函数

提供一个日期,获取这个日期的星期对应日历列表,键为星期标示

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

$month_date = '2015-09-25';

$start_time = strtotime($month_date);

$start_week = date('w', $start_time);

$total_month_day = date('t', $start_time);

  

$weeks_in_month = ceil(($start_week+$total_month_day)/7);

  

$month_day_arr = [];

$start_month_day = 1;

for($i=0;$i<$weeks_in_month;$i++) {

  

  for($j=0;$j<7;$j++){

    if($i ==0 && $j >= $start_week) {

      $month_day_arr[$i][$j] = $start_month_day;

      $start_month_day++;

    } elseif($i == 0) {

      $month_day_arr[$i][$j] = '';

    } else {

      $month_day_arr[$i][$j] = $start_month_day;

      $start_month_day++;

    }

  

    if($start_month_day > $total_month_day){

      break;

    }

  }

}

  

echo "<pre>";

print_r($month_day_arr);

  

Array

(

  [0] => Array

    (

      [0] =>

      [1] =>

      [2] => 1

      [3] => 2

      [4] => 3

      [5] => 4

      [6] => 5

    )

  

  [1] => Array

    (

      [0] => 6

      [1] => 7

      [2] => 8

      [3] => 9

      [4] => 10

      [5] => 11

      [6] => 12

    )

  

  [2] => Array

    (

      [0] => 13

      [1] => 14

      [2] => 15

      [3] => 16

      [4] => 17

      [5] => 18

      [6] => 19

    )

  

  [3] => Array

    (

      [0] => 20

      [1] => 21

      [2] => 22

      [3] => 23

      [4] => 24

      [5] => 25

      [6] => 26

    )

  

  [4] => Array

    (

      [0] => 27

      [1] => 28

      [2] => 29

      [3] => 30

    )

  

)

     获取指定日期所在月的开始日期与结束日期

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

/**

   * @param string $date

   * @param boolean 为true返回开始日期,否则返回结束日期

   * @return array

   * @access private

   */

  private function getMonthRange( $date, $returnFirstDay = true ) {

    $timestamp = strtotime( $date );

    if ( $returnFirstDay ) {

      $monthFirstDay = date( 'Y-m-1 00:00:00', $timestamp );

      return $monthFirstDay;

    } else {

      $mdays = date( 't', $timestamp );

      $monthLastDay = date( 'Y-m-' . $mdays . ' 23:59:59', $timestamp );

      return $monthLastDay;

    }

  }

获取当前星期的日期范围,也就是从星期一到星期日的日期范围。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

function getWeekRange($date){

$ret=array();

$timestamp=strtotime($date);

$w=strftime('%u',$timestamp);

$ret['sdate']=date('Y-m-d 00:00:00',$timestamp-($w-1)*86400);

$ret['edate']=date('Y-m-d 23:59:59',$timestamp+(7-$w)*86400);

return $ret;

}

//author:zhxia 获取指定日期所在月的开始日期与结束日期

function getMonthRange($date){

$ret=array();

$timestamp=strtotime($date);

$mdays=date('t',$timestamp);

$ret['sdate']=date('Y-m-1 00:00:00',$timestamp);

$ret['edate']=date('Y-m-'.$mdays.' 23:59:59',$timestamp);

return $ret;

}

//author:zhxia 以上两个函数的应用

function getFilter($n){

$ret=array();

switch($n){

case 1:// 昨天

$ret['sdate']=date('Y-m-d 00:00:00',strtotime('-1 day'));

$ret['edate']=date('Y-m-d 23:59:59',strtotime('-1 day'));

break;

case 2://本星期

$ret=getWeekRange(date('Y-m-d'));

break;

case 3://上一个星期

$strDate=date('Y-m-d',strtotime('-1 week'));

$ret=getWeekRange($strDate);

break;

case 4: //上上星期

$strDate=date('Y-m-d',strtotime('-2 week'));

$ret=getWeekRange($strDate);

break;

case 5: //本月

$ret=getMonthRange(date('Y-m-d'));

break;

case 6://上月

$strDate=date('Y-m-d',strtotime('-1 month'));

$ret=getMonthRange($strDate);

break;

}

return $ret;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值