有没有办法从实际上不包含月份的字符串中获取完整日期?
我以[{1}}的格式给出了日期,并且需要将其添加到我的数据库中一个月,
我正在制作的应用程序是针对生活方式的快递员,他们以这种格式获得清单,并且过去2个月可用,所以我需要找出月份?
答案 0 :(得分:0)
假设您想要考虑当前和最近两个月,我可以想象,在该时间跨度内不会有同一工作日的两天数(应首先证明)。
我会使用PHP的日期函数迭代过去n天,然后尝试检测你的"星期三16日"其中n是与参数日期相关的月份天数的总和" t"返回当前和最近两个月。
如果你有你的比赛,你就知道月份和年份(如果你从1月或2月开始,那年也可能是上一年)。
答案 1 :(得分:-1)
Yes
和no
。由于full date
需要了解月份,因此您需要知道如何处理缺少该信息的情况。如果您“猜测”月份(无论是当前的月份还是随机的,无关紧要),那么“是”即将结束。如果您无法确定我们谈论的月份,那么答案为no
(或random
)。
PS:你可能也需要一个year
......
答案 2 :(得分:-1)
<?php
$date = 16;
$day = "Wednesday";
$oneMonthAgo = explode(" ",date("m Y F",strtotime("-1 month")));
$twoMonthsAgo = explode(" ",date("m Y F",strtotime("-2 months")));
if (date("l",strtotime($date."-".$oneMonthAgo[0]."-".$oneMonthAgo[1]))==$day) {
echo "Last month: ".$oneMonthAgo[2];
}
else if (date("l",strtotime($date."-".$twoMonthsAgo[0]."-".$twoMonthsAgo[1]))==$day) {
echo "Month before last: ".$twoMonthsAgo[2];
}
else {
echo "Not valid";
}
?>
因为您使用的是PHP,所以有一种简单的方法可以做到这一点。在其他语言中,您必须使用weekday algorithm。
在PHP中,我们可以将格式正确的字符串转换为时间,然后我们可以从中导出日期信息。格式正确的字符串的示例是-1 month
或-2 months
,它们分别返回前一个月或之前一个月的时间对象。
使用date()
功能,我们可以获取这些月份的月,年和月份值。我们用空格分隔这些,以便我们可以在找到它们之后将这些值分解为数组。因此,我们现在有两个数组$oneMonthAgo
和$twoMonthsAgo
,这两个数组都包含他们在0
,1
和2
的月份和文本月份分别为$date
个索引。
现在,我们可以创建另一个时间,方法是将我们要查找的日期(-
)附加到这些值上,并在中间使用适当的分隔符(当使用d-m-Y
作为分隔符时,当使用/
PHP假定m-d-Y
格式时,PHP采用date()
格式。然后,通过另一个$day
函数传递,我们可以找到我们正在寻找的数据:在该日期发生的文本日。现在我们可以简单地将其与我们正在寻找的那天进行比较,if
。如果文本日是相同的,那么这是我们正在寻找的月份,因此我们可以打印出完整的文本月份。
我们会在else
/ if (!String.IsNullOrEmpty(Request.Form["params"]))
声明中对这两个月进行此操作,如果我们仍然无法找到它,则假设该日期无效。
date()
function,strtotime()
function,Valid dates for strtotime()
答案 3 :(得分:-1)
我使用while循环向后循环,然而需要很多个月来查找搜索内容。
$date = 16;
$day = "Wednesday";
$x=0;
$start = date("Y-m-") . $date;
While(date("l", strtotime($start ."-" .$x . "months")) != $day){
$x++;
}
Echo $x . " months ago.";
// Or to output the date:
//Echo date("Y-m-d", strtotime($start ."-" .$x . "months"));
这将在0个月前输出 但是如果输入$ date = 15;它将在5个月前(2017年3月)输出。