我可以通过编辑将日期更改为所需的输出(“第四”,“星期五”,“六月”,2019),但我不想这样做。如何替换字符串,以便自动计算第二个和第四个日期?我尝试获取当前日期并导入该变量,但无法使其正常工作。截止日期:截止日期设为下一个双月星期五(例如截止日期为6月14日和6月28日。如果今天完成提交,则截止日期为6月28日。如果提交于6月30日完成) ,截止日期为7月12日)。
当前结果: 2019年6月28日
预期结果:当前日期是每月的第二个和第四个星期五。目前,我必须不断更改代码中的日期字符串,以获取所需的任何输出。它应该会自动获取当前日期,并显示该日期的每月第二个和第四个星期五。
class MyDateTime extends DateTime
{
/**
* Returns a MyDateTime object set to 00:00 hours on the nth occurence
* of a given day of the month
*
* @param string $n nth day required, eg first, second etc
* @param string $day Name of day
* @param mixed $month Month number or name optional defaults to current month
* @param mixed $year optional defaults to current year
*
* @return MyDateTime set to last day of month
*/
public function nthDayOfMonth($n, $day, $month = null, $year = null)
{
$timestr = "$n $day";
if(!$month) $month = $this->format('M');
$timestr .= " of $month $year";
$this->setTimestamp(strtotime($timestr));
$this->setTime(0, 0, 0);
return $this;
}
}
$dateTime = new MyDateTime();
echo $dateTime->nthDayOfMonth('fourth', 'Fri', 'Jun', 2019)->format('m-d-Y');
?>
它将存储在这样的html表单输入字段中
<input type="text" name="cutoffdate" id="cutoffdate" value="
<?php echo $datetime; ?>" readonly>
答案 0 :(得分:1)
这应该通过简单地对第二部分和第四部分进行硬编码并使用date()
函数来获取当前的月份和年份来为您完成
<?php
class MyDateTime extends DateTime
{
/**
* Returns a MyDateTime object set to 00:00 hours on the nth occurence
* of a given day of the month
*
* @param string $n nth day required, eg first, second etc
* @param string $day Name of day
* @param mixed $month Month number or name optional defaults to current month
* @param mixed $year optional defaults to current year
*
* @return MyDateTime set to last day of month
*/
public function nthDayOfMonth($n, $day, $month = null, $year = null)
{
$timestr = "$n $day";
if(!$month) $month = $this->format('M');
$timestr .= " of $month $year";
$this->setTimestamp(strtotime($timestr));
$this->setTime(0, 0, 0);
return $this;
}
public function secondFriday()
{
$timestr = 'second friday of ' . date('M') . ' ' . date('Y');
$this->setTimestamp(strtotime($timestr));
$this->setTime(0, 0, 0);
return $this;
}
public function fourthFriday()
{
$timestr = 'fourth friday of ' . date('M') . ' ' . date('Y');
$this->setTimestamp(strtotime($timestr));
$this->setTime(0, 0, 0);
return $this;
}
}
$dateTime = new MyDateTime();
echo $dateTime->secondFriday()->format('m-d-Y') . ' / ' . $dateTime->fourthFriday()->format('m-d-Y') ;