PHP中如何给日期加上一个月 加一周
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP中如何给日期加上一个月 加一周相关的知识,希望对你有一定的参考价值。
你好,获取当前时间戳:time() ,如果你没设置时区 ,那么当前时间时间戳是:time()+3600*8 ,我们假设你的时区设置正确,那么time()+3600*24*30 就是一个月,一周就是time()+3600*24*7 (3600是一小时的秒数X24小时 就是一天X30/7)就是30天或者7天了。希望能帮到你,望采纳! 参考技术A php中的date函数可以用来进行时间控制。首先需要用date_default_timezone_set来设置一个时区,比如说:
date_default_timezone_set("PRC");
实现加一个月
date("Y-m-d",strtotime("+1months",strtotime("2015-11-27")));
//结果是 2015-12-27
实现加一周
改成 +1week
即date("Y-m-d",strtotime("+1week",strtotime("2015-11-27"))); 参考技术B
可以这样
$a = '2014-11-03';$b = date('Y-m-d', strtotime($a.' +10 month'));
$c = date('Y-m-d', strtotime($a.' +1 year'));
echo $b;//2015-09-03
echo $c;//2015-11-03
//加上一周可以换成加上7天
$d = date('Y-m-d', strtotime($a.' +7 day'));
echo $d;//2015-11-10本回答被提问者和网友采纳 参考技术C 这个只能把服务器的时间改上一月或上一周
获取PHP中给定周数的第一周
【中文标题】获取PHP中给定周数的第一周【英文标题】:Get the first week day in a given week number in PHP 【发布时间】:2013-08-29 09:20:36 【问题描述】:如何获取给定周数中的第一周? 我正在 PHP 中为日历应用程序创建一个函数。
想法:当我点击一个基本上使用 +1 个月的 strtotime 的链接时,它当然只会跳转到同一天。我需要正确的星期数。
示例:当我使用菜单从 8 月移动到 9 月时,它不应该选择我在 8 月的同一日期,而是选择 9 月第一周的第一天(星期一,9 月 2 日,星期36 号)。
从 9 月到 10 月:第 40 周,10 月 1 日星期二。
【问题讨论】:
你能写信质疑你的日期输出格式吗?你只有年份2013
和周数40
?
@Bora 是的。整个想法是日历应该检查哪一天是给定周数中的合法第一天。所以基本上,如果我想获取第 40 周的第一个工作日,它应该返回正确的工作日,而不是总是星期一:) 当然,这一年至关重要,因为每年的工作日并不总是相同的。
ISO 周总是从星期一开始。 2013 年第 40 周从 2013 年 9 月 30 日星期一开始。您如何定义“合法的第一天”?
@CaptainPayalytic timeanddate.com/calendar 实际上,有星期四的那一周(或者换句话说:3 天中的 4 天)将决定它发生在哪个月。所以第 40 周不是从 9 月 30 日星期一开始,而是从 10 月 1 日(星期二)开始。至少这里(芬兰)是这样。日历如下所示:paivyri.fi。从那里你可以看到我的代码应该如何改变周数。
不,2013 年第 40 周从 9 月 30 日开始。那是对的。我知道你需要别的东西,但是 ISO 周从星期一开始,不管你喜欢与否。如果我理解你,如果周在 2 个不同的月份,你需要 first-next-date 吗?
【参考方案1】:
我找到了一个和你想要的完全一样的功能。这是setISODate
$date = new DateTime();
$date->setISODate(2013, 35, 1);
echo $date->format('Y-m-d');
您可以根据需要更改Y-m-d
日期格式
输出
2013-08-26 // This week number and monday
用法
setISODate(year, week, day)
【讨论】:
【参考方案2】:试试这个代码
<?php
$week = 3;
$year = 2009;
$timestamp = mktime( 0, 0, 0, 1, 1, $year ) + ( $week * 7 * 24 * 60 * 60 );
$timestamp_for_monday = $timestamp - 86400 * ( date( 'N', $timestamp ) - 1 );
$date_for_monday = date( 'Y-m-d', $timestamp_for_monday );
?>
【讨论】:
【参考方案3】:就像every1 已经说过的那样,ISO 周从星期一开始。来自http://en.wikipedia.org/wiki/ISO_week_date 的引用:Weeks start with Monday.
如果我正确理解您的问题,如果所选周在 2 个不同的月份中,您需要下个月的 first-next-date 吗?
function getFirstWeekDay($year, $week)
$dt = (new DateTime)->setISODate($year, $week, 1);
$dtC = clone $dt;
for ($N = $dt->format('N'); $N < 7; $N++)
$dtC->modify('+1 day');
if ($dt->format('m') !== $dtC->format('m'))
return $dtC;
return $dt;
echo getFirstWeekDay(2013, 40)->format('W\t\h \w\e\e\k \i\s Y-m-d');
# 40th week is 2013-10-01
echo getFirstWeekDay(2013, 1)->format('W\t\h \w\e\e\k \i\s Y-m-d');
# 1th week is 2013-01-01
【讨论】:
以上是关于PHP中如何给日期加上一个月 加一周的主要内容,如果未能解决你的问题,请参考以下文章
PHP时间日期增减操作示例date strtotime实现加一天加一月等操作
PHP时间日期操作增减(date strtotime) 加一天 加一月