//3.将一个指定的日期时间转换为时间戳
//var_dump(mktime('时','分','秒','月','日','年'));
var_dump(mktime('10','30','59','12','30','2001'));
//4.将一个字符串格式的日期,转换为时间戳
var_dump(date('Y-m-d H:i:s',strtotime("+1day"))); //明天的现在这个时候
var_dump(date('Y-m-d H:i:s',strtotime("-1day"))); //昨天的现在这个时候
var_dump(date('Y-m-d H:i:s',strtotime("-1week"))); //上周的现在这个时候
var_dump(date('Y-m-d H:i:s',strtotime("-1month"))); //上个月的现在这个时候
var_dump(date('Y-m-d H:i:s',strtotime("-1year"))); //上个月的现在这个时候
var_dump(date('Y-m-d H:i:s',strtotime("-1year +1month +2week +2day"))); //上个月的现在这个时候
calendar_new.php
<!DOCTYPE html>
<title>万年历</title>
<meta charset="utf-8"/>
</head>
//获取用户查询的年份和月份
$year = isset($_GET['year'])==true ? $_GET['year'] : date('Y');
$month = isset($_GET['month'])==true ? $_GET['month'] : date('m');
//只对$_GET有效
// $year = $_GET['year'] ?? date('Y');
// $month = $_GET['month'] ?? date('m');
$new_year = date('Y',time());
// echo $new_year;
$new_month = date('m',time());
// echo $new_month;
$new_days = date('d',time());
//获取当前月第一天的时间戳
$time = mktime(0,0,0,$month,1,$year);
//1.首先,获取万年历前方的空格
$first = date('N',$time)-1; //0
//2.然后,获得当前月的天数
$days = date('t',$time); //30
//3.最后,求得万年历后方的空格
$last = 42-$first-$days //12
<center>
<h2>万年历</h2>
<h3><?= $year ?> 年 <?= $month ?> 月</h3>
<form action="./calendar_new.php" method="get">
年份:<select name='year'>
for($y=1970; $y<=2100; $y++){
if($y==$year){
echo "<option selected value='{$y}'>{$y} 年</option>";
}else{
echo "<option value='{$y}'>{$y} 年</option>";
</select>
月份:<select name='month'>
for($m=1; $m<=12; $m++){
if($m==$month){
<option selected value="<?= $m ?>"><?= $m ?> 月</option>
}else{
<option value="<?= $m ?>"><?= $m ?> 月</option>
</select>
<input type="submit" value="查询"/>
</form>
<table border='1' width='800' cellspacing='0' cellpadding='5'>
<th>一</th>
<th>二</th>
<th>三</th>
<th>四</th>
<th>五</th>
<th>六</th>
<th>日</th>
<tr align='center'>
//定义一个统计单元格个数的空变量
$num = 0;
$new_days = date('d',time());
//1.循环表格中前方的空格
for($i=1; $i<=$first; $i++){
echo "<td> </td>";
++$num;
//判断单元格是否到达7的倍数
if($num%7==0){
echo "</tr><tr align='center'>";
//2.循环表格中中间的日期
for($j=1; $j<=$days; $j++){
// echo $year;
// echo $month;
if(($j==$new_days) && ($year==$new_year) && ($month==$new_month) ){
echo "<td><font color=red>{$j}</font></td>";
++$num;
}else{
echo "<td>{$j}</td>";
++$num;
//判断单元格是否到达7的倍数
if($num%7==0){
echo "</tr><tr align='center'>";
//3.循环表格最后的空格
for($k=1; $k<=$last; $k++){
echo "<td> </td>";
++$num;
//判断单元格是否到达7的倍数
if($num%7==0){
echo "</tr><tr align='center'>";
</table>
<a href="./calendar_new.php?year=<?= $year-1 ?>&month=<?= $month ?>">上一年</a>
<a href="./calendar_new.php?year=<?= $prevy ?>&month=<?= $prevm ?>">上一月</a>
<a href="./calendar_new.php">回到今天</a>
<a href="./calendar_new.php?year=<?= $nexty ?>&month=<?= $nextm ?>">下一月</a>
<a href="./calendar_new.php?year=<?= $year+1 ?>&month=<?= $month ?>">下一年</a>
</center>
</body>
</html>
大家可以直接复制代码,放到对应的文件名里就可以运行。适合初学php的人学习使用。
首先,给大家展示一下效果图。功能包括:年份和月份查询,上一年、下一年、上一月、下一月和回到今天这几个功能。项目文件项目代码1.php<?php echo "<pre>"; //设置时区 //date_default_timezone_set('America/New_York'); //1.获取时间戳 var_dump(time()); //2.格式化时间戳 var_dump(date('Y-m-d H:i:s',time()));..
-
公历:我们平常使用的日历,也就是 Gregorian Calendar。
-
农历:中国传统使用的日历,又称阴历。农历比公历慢大约一个月,所以每年农历的月份都会比公历的月份多一个月。
-
闰年:公历中,能被 4 整除但不能被 100 整除的年份是闰年,或者能被 400 整除的年份也是闰年。闰年有 29 天的 2 月。
那么,我们可以先
写
一个函数来判断一个年份是不是闰年:
```python
def is_leap_year(year):
if year % 4 == 0 and year % 100 != 0:
return True
if year % 400 == 0:
return True
return False
然后,我们可以
写
一个函数来计算公历中某个月的天数:
```python
def days_in_month(year, month):
if month in [1, 3, 5, 7, 8, 10, 12]:
return 31
if month in [4, 6, 9, 11]:
return 30
if month == 2:
if is_leap_year(year):
return 29
else:
return 28
接下来,我们可以
写
一个函数来计算公历中某年的天数:
```python
def days_in_year(year):
if is_leap_year(year):
return 366
return 365
最后,我们可以
写
一个函数来输出公历中某年某月的日历:
```python
def print_calendar(year, month):
# 输出日历的头部
print("Sun Mon Tue Wed Thu Fri Sat")
# 计算当月 1 号是星期几
start_day = 1 # 假设 1
### 回答2:
万年历是指能够显示计算机时代至远古时代任意年份、月份的月历,包括每个月的日期排列、星期几等信息。下面是使用Python来编
写
一个简单的万年历的示例代码:
```python
import calendar
def print_calendar(year, month):
c = calendar.TextCalendar(calendar.SUNDAY)
calendar_str = c.formatmonth(year, month)
print(calendar_str)
def main():
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
print("
-
-
-
-
-
%d年%d月
-
-
-
-
-
" % (year, month))
print_calendar(year, month)
if __name__ == "__main__":
main()
这段代码使用了`calendar`模块来生成日历信息,首先通过`input`函数获取用户输入的年份和月份。然后通过`TextCalendar`类来生成指定年份和月份的日历信息。最后通过`print`函数将日历信息打印出来。
用户将会被要求输入一个年份和一个月份,程序将会生成并显示出相应的月历信息。
这是一个简单的示例,你也可以根据自己的需求加入更多的功能,比如支持一次性打印多个月份的日历,或者添加查找特定日期的功能等等。
### 回答3:
万年历是一个可以显示公历日期的日历,包括年、月和日。使用Python编
写
万年历可以通过日期计算和条件判断来实现。
下面是一个简单的Python代码示例实现一个万年历:
```python
import calendar
def get_calendar(year):
# 使用calendar库中的TextCalendar类来获取指定年份的日历
cal = calendar.TextCalendar()
# 使用formatyear方法获取整个年份的日历,并返回字符串
return cal.formatyear(year)
def main():
while True:
year = int(input("请输入要查看的年份:"))
if year <= 0:
raise ValueError
break
except ValueError:
print("输入错误,请输入一个大于0的整数年份!")
# 调用get_calendar函数获取日历字符串
calendar_str = get_calendar(year)
# 打印日历
print(calendar_str)
if __name__ == "__main__":
main()
运行这段代码,就可以输入一个年份,然后输出该年份的日历。
代码首先导入了`calendar`库,然后定义了一个`get_calendar`函数,该函数接受一个年份作为参数,使用`TextCalendar`类获取指定年份的日历,然后调用`formatyear`方法返回日历的字符串表示。
`main`函数中使用一个循环不断读取用户输入的年份(必须是大于0的整数),然后调用`get_calendar`函数获取指定年份的日历字符串,并打印出来。