可能重复:
获取PHP中的第一天?
给定时间戳我需要找到时间戳所属的第一天.
例如
$format = "first day of week";
//convert to time
$time = strtotime("2011-07-01 00:00:00");
//format the time to the first day of the week
$date = strtotime($format,$time);
//Put the first day of the week into a pretty format
$weekStartDate = date("Y-m-d",$date);
Run Code Online (Sandbox Code Playgroud)
一周的开始应该等于2011-06-27,此时它已经出现了可怕的错误,并且等于1970-01-01,这表明我的"一周的第一天"格式无效.
任何想法将非常感谢,谢谢,
只要您所在国家/地区的第一天是星期日,PHP(5.3+)中的DateTime类就可以正常工作.在荷兰,一周的第一天是星期一,这使得课程无法用于构建具有周视图和计算的日历.
我似乎无法在Stackoverflow或其他互联网上找到关于如何让DateTime行动的答案,就像一周的第一天是星期一一样.
我在Stackoverflow上找到了这个部分,但它并没有解决你遇到麻烦的所有方法,而且这不是一个优雅的解决方案.
$dateTime = new DateTime('2012-05-14');
$monday = clone $dateTime->modify(('Sunday' == $dateTime->format('l')) ? 'Monday last week' : 'Monday this week');
Run Code Online (Sandbox Code Playgroud)
有没有办法改变这个或扩展DateTime?无法想象这不是一个场景,因为大多数欧洲星期一开始他们的周.
补充: 发布完整的日历和功能代码不会让事情变得更清晰.但这里有一行例如.我经常要检查一周的第一天是什么,或者从一周的第一天计算到该周的不同日期和时间.我的代码充满了这些:
$startOfWeek = $date->modify(('Sunday' == $date->format('l')) ? 'Monday last week' : 'Monday this week')->modify('+3 hours')->format(DATETIME);
Run Code Online (Sandbox Code Playgroud)
我也得到了一个不想要的结果,试图获得一个月或一年的第一个完整周.由于我的$ date对象并不总是包含相同的日期,我必须以这种方式继续检查它,使代码难以阅读.在这个日历上有更多的编程要做,我无法预见它会再次发生错误.
编辑虽然存在一些不一致之处.由于一些奇怪的原因,DateTime确实得到了下一个权利:
$test = new DateTime('2012-10-29'); // Monday
echo $test->modify('Sunday this week')->format('Y-m-d'); // 2012-11-04
// But...
$test = new DateTime('2012-11-04'); // Sunday
echo $test->modify('Monday this week')->format('Y-m-d'); // 2012-11-05 instead of 2012-10-29
Run Code Online (Sandbox Code Playgroud)
但我认为我可以使问题更清楚: DateTime()类可以与星期一一起用作一周的第一天.如果没有,可以将课程扩展为使用星期一作为一周的第一天.
更新: 好的,我想我已经到了某个地方......我不是编程班的专业人员......但这似乎有效数星期.但它仍然需要第一天,第二天的规则......以及星期日本身的日期.我不认为这是万无一失的.我将不胜感激任何修复它的帮助.
class EuroDateTime extends DateTime { …
Run Code Online (Sandbox Code Playgroud) 我试图根据语言环境找到第一天和最后一周的日子.在周日的美国周开始,但在其他国家,它可能在星期一甚至星期六开始.
setlocale(LC_ALL, "en_US.UTF-8");
date_default_timezone_set("America/New_York");
$start_week = (new DateTimeImmutable());
$start_week = $start_week->modify('this week');
$end_week = $start_week->modify('this week +6 days');
$interval = new DateInterval('P1D');
$week_range = new DatePeriod($start_week, $interval, $end_week);
foreach($week_range as $week_day) {
// $week_day starts with Monday, supposed to be Sunday
}
Run Code Online (Sandbox Code Playgroud) 运行
var_dump(new \DateTime('first day of this week'));
Run Code Online (Sandbox Code Playgroud)
返回9月1日
这是一个错误,有没有解决方法?
我试图根据输入一周的数字和年份来获得给定周的第一天.我目前正在使用这个当前的一周和一年,并像一个魅力.
$week = date('W');
$year = date('Y');
$date1 = date('Y-m-d', strtotime($year."W".$week.'1'));
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试输入我自己的一周和一年时,它不起作用
$week = 7;
$year = 2013;
$date1 = date('Y-m-d', strtotime($year."W".$week.'1'));
Run Code Online (Sandbox Code Playgroud)
如果字符串我应该用于strtotime是什么类型的?怎么提供我自己的约会不起作用?
目标:如果当前星期几是星期一以外的任何一天,则显示当前星期一的日期.如果当周的当天是星期一,只需显示今天的日期.
**这是我写的,我认为它有效,但可能不是确定日期最干净的方法.话虽如此,有没有人看到代码错误或不起作用的原因?**
<?php
date_default_timezone_set("America/New_York");
$day = date("w");
if( $day == 1 ) {$day -= 0;}
if( $day == 2 ) {$day -= 1;}
if( $day == 3 ) {$day -= 2;}
if( $day == 4 ) {$day -= 3;}
if( $day == 5 ) {$day -= 4;}
if( $day == 6 ) {$day -= 5;}
if( $day == 0 ) {$day -= 6;}
$calc = mktime(0,0,0,date("m"),date("d")-$day,date("Y"));
echo date("m/d/Y",$calc)."<br>";
echo "start date of work week is: ".date("m/d/Y", $calc);
?>
Run Code Online (Sandbox Code Playgroud) 有没有办法2013-05-29
在PHP中采用这样的日期并获得星期一星期几的日期(格式相同)?所以输出将是这样的:2013-05-27