PHP 自制日历
PHP 自制日历
一、计算数据
1、new一个Calendar类
2、初始化两个下拉框中的数据,年份与月份
3、初始化要搜索的年份和月份
4、计算得出日历中每一天的数据信息,包括css、天数
复制代码
require_once 'calendar.php';
$util = new Calendar();
$years = array(2012, 2013, 2014, 2015, 2016);//年份选择自定义
$months = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);//月份数组
//获取post的年份数据
if(empty($_POST['ddlYear'])) {
$year = date('Y');
}else {
$year = $_POST['ddlYear'];
}
//获取post的月份数据
if(empty($_POST['ddlMonth'])) {
$month = date('n');
}else {
$month = $_POST['ddlMonth'];
}
$calendar = $util->threshold($year, $month);//获取各个边界值
$caculate = $util->caculate($calendar);//计算日历的天数与样式
$draws = $util->draw($caculate);//画表格,设置table中的tr与td
?>
复制代码
二、html展示
1、休息天的背景色是不同的,不是当前搜索年月的天数字体颜色也是不同的
2、div中做初始化年份与月份的下拉框的操作,并选中当前要搜索的年月
3、数据已计算好,哪个td属于哪个tr也已做好,直接将table打印出来即可
复制代码
日 | 一 | 二 | 三 | 四 | 五 | 六 |
|
复制代码
三、Calendar类
1、threshold方法,生成日历的各个边界值
1)计算这个月总天数
2)计算这个月第一天与最后一天,各是星期几
3)计算日历中的第一个日期与最后一个日期
复制代码
/**
* @deprecated 生成日历的各个边界值
* @param string $year
* @param string $month
* @return array
*/
function threshold($year, $month) {
$firstDay = mktime(0, 0, 0, $month, 1, $year);
$lastDay = strtotime('+1 month -1 day', $firstDay);
//取得天数
$days = date("t", $firstDay);
//取得第一天是星期几
$firstDayOfWeek = date("N", $firstDay);
//获得最后一天是星期几
$lastDayOfWeek = date('N', $lastDay);
//上一个月最后一天
$lastMonthDate = strtotime('-1 day', $firstDay);
$lastMonthOfLastDay = date('d', $lastMonthDate);
//下一个月第一天
$nextMonthDate = strtotime('+1 day', $lastDay);
$nextMonthOfFirstDay = strtotime('+1 day', $lastDay);
//日历的第一个日期
if($firstDayOfWeek == 7)
$firstDate = $firstDay;
else
$firstDate = strtotime('-'. $firstDayOfWeek .' day', $firstDay);
//日历的最后一个日期
if($lastDayOfWeek == 6)
$lastDate = $lastDay;
elseif($lastDayOfWeek == 7)
$lastDate = strtotime('+6 day', $lastDay);
else
$lastDate = strtotime('+'.(6-$lastDayOfWeek).' day', $lastDay);
return array(
'days' => $days,
'firstDayOfWeek' => $firstDayOfWeek,
'lastDayOfWeek' => $lastDayOfWeek,
'lastMonthOfLastDay' => $lastMonthOfLastDay,
'firstDate' => $firstDate,
'lastDate' => $lastDate,
'year' => $year,
'month' => $month
);
}
复制代码
2、caculate方法,计算日历的天数与样式
1)将上个月的天数计算出来,本月第一天的星期不是星期天的话,就需要根据上个月的最后一天计算
2)将本月的天数遍历出来,如果是休息天就加上特殊的css样式
3)将下个月的天数计算出来,分三种情况,星期日、星期六和工作日
复制代码
/**
* @author Pwstrick
* @param array $calendar 通过threshold方法计算后的数据
* @deprecated 计算日历的天数与样式
*/
function caculate($calendar) {
$days = $calendar['days'];
$firstDayOfWeek = $calendar['firstDayOfWeek'];//本月第一天的星期
$lastDayOfWeek = $calendar['lastDayOfWeek'];//本月最后一天的星期
$lastMonthOfLastDay = $calendar['lastMonthOfLastDay'];//上个月的最后一天
$year = $calendar['year'];
$month = $calendar['month'];
$dates = array();
if($firstDayOfWeek != 7) {
$lastDays = array();
$current = $lastMonthOfLastDay;//上个月的最后一天
for ($i = 0; $i
array_push($lastDays, $current);//添加上一个月的日期天数
$current--;
}
$lastDays = array_reverse($lastDays);//反序
foreach ($lastDays as $index => $day) {
array_push($dates, array('day' => $day, 'tdclass' => ($index ==0 ?'rest':''), 'pclass' => 'outter'));
}
}
//本月日历信息
for ($i = 1; $i
$isRest = $this->_checkIsRest($year, $month, $i);
//判断是否是休息天
array_push($dates, array('day' => $i, 'tdclass' => ($isRest ?'rest':''), 'pclass' => ''));
}
//下月日历信息
if($lastDayOfWeek == 7) {//最后一天是星期日
$length = 6;
}
elseif($lastDayOfWeek == 6) {//最后一天是星期六
$length = 0;
}else {
$length = 6 - $lastDayOfWeek;
}
for ($i = 1; $i
array_push($dates, array('day' => $i, 'tdclass' => ($i==$length ?'rest':''), 'pclass' => 'outter'));
}
return $dates;
}
复制代码
3、draw方法,画表格,设置table中的tr与td
1)数据将要用table标签来显示,所以这里要将各个tr下面的td排列好
2)$index % 7 == 0 计算表格每行的第一列
3)$index % 7 == 6 || $index == ($length-1) 计算每行的最后一列,或$caculate的最后一个数据
4)将中间行添加到$tr中,就是每一行的array
复制代码
/**
* @author Pwstrick
* @param array $caculate 通过caculate方法计算后的数据
* @deprecated 画表格,设置table中的tr与td
*/
function draw($caculate) {
$tr = array();
$length = count($caculate);
$result = array();
foreach ($caculate as $index => $date) {
if($index % 7 == 0) {//第一列
$tr = array($date);
}elseif($index % 7 == 6 || $index == ($length-1)) {
array_push($tr, $date);
array_push($result, $tr);//添加到返回的数据中
$tr = array();//清空数组列表
}else {
array_push($tr, $date);
}
}
return $result;
}

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 11에서 일상 업무와 루틴을 구성하는 중요한 도구는 작업 표시줄에 시간과 날짜를 표시하는 것입니다. 이 기능은 일반적으로 화면 오른쪽 하단에 있으며 시간과 날짜에 즉시 액세스할 수 있습니다. 이 영역을 클릭하면 달력이 나타나 별도의 앱을 열지 않고도 다가오는 약속과 날짜를 더 쉽게 확인할 수 있습니다. 그러나 여러 모니터를 사용하는 경우 이 기능에 문제가 발생할 수 있습니다. 특히 연결된 모든 모니터의 작업 표시줄에는 시계와 날짜가 표시되지만 두 번째 모니터에서 날짜와 시간을 클릭하여 달력을 표시하는 기능은 사용할 수 없습니다. 현재 이 기능은 메인 디스플레이에서만 작동합니다. 이는 Windows 10과 달리

많은 사용자들이 win10 달력 도구를 사용하여 현재 일수를 확인하고 싶어하지만 달력은 이 기능을 자동으로 표시하지 않습니다. 실제로 올해 누적 주 수를 보려면 간단한 설정만 하면 됩니다~ win10 달력이 표시됩니다. 주 디지털 설정 튜토리얼: 1. 바탕 화면 왼쪽 하단의 검색에 달력을 입력하고 애플리케이션을 엽니다. 2. 열린 캘린더 애플리케이션에서 왼쪽 하단에 있는 "기어" 아이콘을 클릭하면 오른쪽에 설정이 나타납니다. "캘린더 설정"을 클릭합니다. 3. 열린 캘린더 설정에서 계속해서 "주 번호"를 찾습니다. 그런 다음 주를 변경하십시오. 숫자 옵션을 "연도의 첫 번째 날"로 조정하십시오. 4. 위 설정을 완료한 후 '주'를 클릭하면 올해의 주수 통계를 확인할 수 있습니다.

Outlook 일정이 Google Calendar, Teams, iPhone, Android, Zoom, Office 계정 등과 동기화할 수 없는 경우 아래 단계에 따라 문제를 해결하세요. 캘린더 앱은 구글캘린더, 아이폰, 안드로이드, 마이크로소프트 오피스 365 등 다른 캘린더 서비스와 연동이 가능하며, 자동으로 동기화가 가능해 매우 유용합니다. 그러나 OutlookCalendar가 타사 캘린더와 동기화하지 못하는 경우 동기화를 위해 잘못된 캘린더를 선택하거나 캘린더가 표시되지 않거나 백그라운드 애플리케이션 간섭, 오래된 Outlook 애플리케이션 또는 캘린더 애플리케이션 등이 원인일 수 있습니다. Outlook 일정이 동기화되지 않는 문제에 대한 예비 수정

win0 시스템을 사용하는 친구들은 win10 캘린더를 열 수 없는 상황에 직면했습니다. 이것은 단지 일반적인 컴퓨터 결함일 뿐이며, 오늘 편집자는 아래에 자세한 해결 방법을 제시했습니다. 한 번 보자. win10 오른쪽 하단에서 달력이 열리지 않는 문제 해결 방법 1. win10 시스템에서 시작 클릭 → 위 프로그램 목록 버튼 클릭 → 병음(중국어) R 찾기 → 달력 2. 처음 사용하는 경우 , 새로운 이벤트가 열리지 않을 수 있습니다. (마우스를 위로 올리면 진한 파란색이 선택되지 않습니다.) 개인정보 보호에서 설정할 수 있습니다. 바탕화면 왼쪽 상단에 있는 막대 3개 아이콘을 클릭하세요. → 하단에 설정 메뉴가 있습니다. 3. 팝업 인터페이스에서 개인정보 보호를 클릭하세요. 4. 이전에 설정을 사용한 적이 있다면 다음을 클릭하세요. 왼쪽

이메일 관리자 애플리케이션인 Microsoft Outlook을 사용하면 이벤트와 약속을 예약할 수 있습니다. 이를 통해 Outlook 응용 프로그램에서 이러한 활동(이벤트라고도 함)을 생성, 관리 및 추적할 수 있는 도구를 제공하여 체계적으로 정리할 수 있습니다. 그러나 때로는 원치 않는 이벤트가 Outlook의 일정에 추가되어 사용자에게 혼란을 주고 일정에 스팸을 보내는 경우가 있습니다. 이 문서에서는 Outlook이 내 일정에 이벤트를 자동으로 추가하지 못하도록 방지하는 데 도움이 되는 다양한 시나리오와 단계를 살펴보겠습니다. Outlook 이벤트 – 간략한 개요 Outlook 이벤트는 다양한 용도로 사용되며 다음과 같은 유용한 기능을 많이 가지고 있습니다. 일정 통합: Outlook에서

캘린더는 사용자가 일정을 기록하고 미리 알림을 설정하는 데 도움이 될 수 있습니다. 그러나 많은 사용자가 Windows 10에서 캘린더 이벤트 미리 알림이 팝업되지 않으면 어떻게 해야 하는지 묻고 있습니다. 사용자는 먼저 Windows 업데이트 상태를 확인하거나 Windows App Store 캐시를 지워 작업을 수행할 수 있습니다. 이 사이트에서는 Win10 캘린더 이벤트 알림이 표시되지 않는 문제에 대한 분석을 사용자에게 주의 깊게 소개합니다. 캘린더 이벤트를 추가하려면 시스템 메뉴에서 "캘린더" 프로그램을 클릭하세요. 달력의 날짜를 마우스 왼쪽 버튼으로 클릭하세요. 편집창에 이벤트 이름과 알림 시간을 입력하고 '저장' 버튼을 클릭하면 이벤트가 추가됩니다. win10 캘린더 이벤트 알림이 팝업되지 않는 문제 해결

Windows 11 컴퓨터에 잘못된 시간이 표시되면 많은 문제가 발생할 수 있으며 심지어 인터넷에 연결하지 못할 수도 있습니다. 실제로 일부 응용 프로그램은 시스템에 잘못된 날짜와 시간이 표시되면 열거나 실행을 거부합니다. 그렇다면 이 문제는 어떻게 해결해야 할까요? 아래를 살펴보겠습니다! 방법 1: 1. 먼저 아래 작업 표시줄의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 작업 표시줄 설정을 선택합니다. 2. 작업 표시줄 설정 오른쪽에서 taskbarcorneroverflow3을 찾은 다음 그 위에 있는 시계 또는 시계를 찾아 선택하여 켭니다. 방법 2: 1. 키보드 단축키 win+r을 눌러 실행을 호출하고 regedit를 입력한 후 Enter를 눌러 확인합니다. 2. 레지스트리 편집기를 열고 HKEY를 찾으세요.

Vue는 매우 인기 있는 프런트 엔드 프레임워크로, 개발자가 효율적이고 유연하며 유지 관리하기 쉬운 웹 애플리케이션을 구축하는 데 도움이 되는 구성 요소화, 데이터 바인딩, 이벤트 처리 등과 같은 많은 도구와 기능을 제공합니다. 이번 글에서는 Vue를 사용하여 캘린더 컴포넌트를 구현하는 방법을 소개하겠습니다. 1. 요구사항 분석 먼저 이 캘린더 구성요소의 요구사항을 분석해야 합니다. 기본 달력에는 다음과 같은 기능이 있어야 합니다. 이번 달의 달력 페이지를 표시하고 특정 날짜를 클릭하여 이전 달 또는 다음 달로 전환할 수 있도록 지원합니다.
