我可以在本周一获得:
$monday = date_create()->modify('this Monday');
我想在本月1日轻松获得。我怎样才能做到这一点?
答案 0 :(得分:292)
这是我使用的。
每月的第一天:
date('Y-m-01');
本月最后一天:
date('Y-m-t');
答案 1 :(得分:222)
需要PHP 5.3才能工作(PHP 5.3中引入了“第一天”)。否则上面的例子是唯一的方法:
<?php
// First day of this month
$d = new DateTime('first day of this month');
echo $d->format('jS, F Y');
// First day of a specific month
$d = new DateTime('2010-01-19');
$d->modify('first day of this month');
echo $d->format('jS, F Y');
// alternatively...
echo date_create('2010-01-19')
->modify('first day of this month')
->format('jS, F Y');
在PHP 5.4+中你可以这样做:
<?php
// First day of this month
echo (new DateTime('first day of this month'))->format('jS, F Y');
echo (new DateTime('2010-01-19'))
->modify('first day of this month')
->format('jS, F Y');
如果您希望以简洁的方式执行此操作,并且已经有数值的年份和月份,则可以使用date()
:
<?php
echo date('Y-m-01'); // first day of this month
echo date("$year-$month-01"); // first day of a month chosen by you
答案 2 :(得分:29)
这就是你需要的一切:
$week_start = strtotime('last Sunday', time());
$week_end = strtotime('next Sunday', time());
$month_start = strtotime('first day of this month', time());
$month_end = strtotime('last day of this month', time());
$year_start = strtotime('first day of January', time());
$year_end = strtotime('last day of December', time());
echo date('D, M jS Y', $week_start).'<br/>';
echo date('D, M jS Y', $week_end).'<br/>';
echo date('D, M jS Y', $month_start).'<br/>';
echo date('D, M jS Y', $month_end).'<br/>';
echo date('D, M jS Y', $year_start).'<br/>';
echo date('D, M jS Y', $year_end).'<br/>';
答案 3 :(得分:19)
目前我正在使用此解决方案:
$firstDay = new \DateTime('first day of this month');
$lastDay = new \DateTime('last day of this month');
我遇到的唯一问题是正在设定奇怪的时间。我的搜索界面需要正确的范围,我最终得到了这个:
$firstDay = new \DateTime('first day of this month 00:00:00');
$lastDay = new \DateTime('first day of next month 00:00:00');
答案 4 :(得分:16)
我使用一种疯狂的方法来执行此操作是使用此命令
$firstDay=date('Y-m-d',strtotime("first day of this month"));
$lastDay=date('Y-m-d',strtotime("last day of this month"));
多数人
答案 5 :(得分:5)
在php 5.2中你可以使用:
<? $d = date_create();
print date_create($d->format('Y-m-1'))->format('Y-m-d') ?>
答案 6 :(得分:3)
丑陋,(并且不使用上面的方法调用)但是有效:
echo 'First day of the month: ' . date('m/d/y h:i a',(strtotime('this month',strtotime(date('m/01/y')))));
答案 7 :(得分:2)
你可以这样做:
$firstday = date_create()->modify('first day January 2010');
答案 8 :(得分:0)
使用日期方法,我们应该能够得到结果。 即;日期(&#39; N / D / l&#39;,mktime(0,0,0,月,日,年));
例如
echo date('N', mktime(0, 0, 0, 7, 1, 2017)); // will return 6
echo date('D', mktime(0, 0, 0, 7, 1, 2017)); // will return Sat
echo date('l', mktime(0, 0, 0, 7, 1, 2017)); // will return Saturday
答案 9 :(得分:0)
我将其与日常计划工作一起使用,以检查是否应在给定月份的第一天向我的会员发送电子邮件。比其他答案多了几行,但坚如磐石。
$(function(){
function sumSection(){
return $(".container").height()
}
function setDimensionBar(){
$(".bar").css({
"height": ($(window).height()/sumSection())*100 + "%"
})
}
function setSection(){
$.each($("section"), function(i, element){
$(element).css({
"min-height": $(window).height()
})
})
}
function addBehaviours(){
let sections = $("section")
$.each($(".node"), function(i, element){
$(element).on("click", function(e){
e.preventDefault()
let scroll = $(sections[i]).offset().top
$('html, body').animate({
scrollTop: scroll
}, 500);
})
})
}
function arrangeNodes(){
$(".node").remove()
$.each($("section"), function(i, element){
let name = $(element).data("name")
let node = $("<li class='node'><span>"+name+"</span></li>")
$(".timeline").append(node)
$(node).css({
"top": ($(".timeline").height()/$(document).height()) * $(element).offset().top
})
})
addBehaviours()
}
$(window).on("scroll", function(){
let top = (window.scrollY/sumSection())*100
$(".bar").css({
"top": top + "%"
})
})
$(window).on("resize", function(){
setSection()
arrangeNodes()
setDimensionBar()
})
setTimeout(
function(){
setSection()
arrangeNodes()
setDimensionBar()
},
200
)
})
答案 10 :(得分:0)
本着YourEnum enumVal = decode(YourEnum.class, ordinal)
的精神,所有那些特殊的php表达式都很棒,尽管它们一遍又一遍。
因此,我决定构建一些基本的日期时间抽象和大量的特定实现,这些抽象可以由任何IDE自动完成。关键是要找到什么类型的东西。像first day of ...
,today
,now
等。我列出的所有内容都是日期时间。因此,有一个名为the first day of a previous month
的接口或抽象类,以及实现它的特定日期时间。
您特定情况下的代码如下:
ISO8601DateTime
有关此方法的更多信息,请查看this entry。
答案 11 :(得分:0)
本月开始和当月最后一秒的时间戳。 您可以添加 00:00:00 或仅引用“今天”
替代方案:
$startOfThisMonth = strtotime("first day of this month",strtotime("today"));
OR
$startOfThisMonth = strtotime("first day of this month 00:00:00");
$endOfThisMonth = strtotime("first day of next month",$startOfThisMonth)-1;