草庐IT

datetime2

全部标签

PHP DateTime - 从 YEAR、WEEK 和 WEEKDAY 生成

我将年、周和工作日存储为整数。工作日从0开始,从星期一开始。这些变量相当于MySQL中的YEAR(date)、WEEK(date)和WEEKDAY(date,1)函数。例如今天(2014年10月30日星期四)将是:$year=2014;$week=44;$weekday=3;//Thursday如何使用这些变量设置DateTime对象的日期?我尝试使用:DateTime::createFromFormat("Y-z",$year."-".((($week-1)*7)+$weekday));还有一些其他变体,但没有给我预期的结果。有什么想法吗? 最佳答案

PHP DateTime getTimestamp 不适用于 1901 年 12 月 13 日之前的时间

我的环境:Apache2.4.27,php5.6.31,64位架构。示例代码:$date=newDateTime('now');$date->setDate(1900,1,1);$date->setTime(0,0,0);$time=$date->getTimestamp();$time的值为false。正如我测试的那样,getTimestamp仅在14Dec1901-19Jan2038范围内有效。我用谷歌搜索,但没有找到任何解决方案。如果您有任何理想,请与我分享!P/s:示例代码是Moodle核心的一部分。所以请不要建议更改代码! 最佳答案

php - DateTime 对象不受其时间戳的约束?

DateTime对象是否不受其时间戳的约束?或者getTimestamp()在使用时是否有某种副作用关于DST更改?详情当设置DateTime对象的时间戳时,DST(意味着格式化时间在更改时钟之前/之后都存在)返回的时间戳与设置的时间戳不同。$php--versionPHP7.1.3(cli)(built:Mar17201716:59:59)(NTS)Copyright(c)1997-2017ThePHPGroupZendEnginev3.1.0,Copyright(c)1998-2017ZendTechnologies重现考虑以下php脚本:date_default_timezone

PHP DateTime CreateFromFormat 问题

functionvalidateDate($date,$format='m-Y'){$d=DateTime::createFromFormat($format,$date);return$d&&$d->format($format)==$date;}validateDate('09-2017','m-Y');函数是从这个answer复制的或php.net我很困惑为什么它返回false而它在前几个月返回true。有什么想法吗? 最佳答案 这是因为您没有提供日期,所以它默认使用当前日期。当前日期是31日,但9月只有30天,因此会跳到10

php - 获取给定 DateTime 的下一个,如果日期不同则跳过

我想从给定的日期和时间获取下个月的日期和时间。这是我现在拥有的:$dt=newDateTime('2019-01-31');for($i=0;$iadd(newDateInterval('P1M'));$final=$dt->format('Y-m-d');echo$final."\n";}//Output://2019-03-03//2019-04-03//2019-05-03//2019-06-03//2019-07-03问题是,它将日期从“31”更改为“02”,因为在2月,没有第31天。所以在没有30或31的月份中,我想跳过这些几个月,但保持天数不变。所以这里应该是预期的输出:/

php - 使用 DateInterval 和 DateTime::add 添加月份时会出现什么问题?

我没能找到解决这个问题的合适方法。正如您在PHP文档中的示例#3中看到的那样,他们声明onemustbewarewhenaddingmonths在DateTime::add中使用DateInterval。对于为什么该方法的行为如此以及我可以做些什么来避免这种情况,我并没有任何解释,乍一看我发现这是一个错误。有人对此有一些见解吗? 最佳答案 问题是每个月的天数可能不同。问题是当您想将日期增加1个月时您在做什么。根据PHP文档,如果您在1月31日(或30日)添加1个月,预期行为是什么?2月只有29天。是否要设置为该月的最后一天?如果这是

php - DateTime::diff(DateTime [, bool absolute = false]) 中的绝对参数有什么作用

这是示例代码$c=newDateTime();$o=clone$c;$o->modify('-60days');$diff=$c->diff($o);$diff2=$c->diff($o,TRUE);var_dump($diff,$diff2);哪些输出object(DateInterval)#3(8){["y"]=>int(0),["m"]=>int(1),["d"]=>int(29),["h"]=>int(0),["i"]=>int(0),["s"]=>int(0),["invert"]=>int(1),["days"]=>int(60)}object(DateInterval)#

php - DateTime/DateInterval 每次刷新增加 25 小时会产生完全不同的结果

这是我的代码:$timezone=new\DateTimeZone('America/New_York');$date1=new\DateTime(date("Y:m:dH:i:s",time()),$timezone);$date1->add(new\DateInterval("PT24H"));echo$date1->format('Y-m-dh:s:m');这应该会在当前时间上增加24小时。问题是,每次刷新页面时,我都会得到不同的结果。我的意思不是像人们期望的那样只有几秒钟,我的意思是很多分钟。有些高于实际时间,有些低于实际时间。现在在晚上9:51进行三次刷新,结果如下:2013

php - 如何有效地比较两个 DateTimes 并检查它们是否是同一天?

我有两个DateTime对象$lastDate=$entity->getDate();//isaDateTimewithsameformatas$today$today=\DateTime::createFromFormat('!Y-m-d',date('Y-m-d'));现在我想检查这两个日期是否是同一天,或者它们是否相隔超过一天(但这还包括如果$lastDay是昨天晚上11点并且$today是新的一天凌晨1点)。我目前的情况是$diff=$today->diff($lastDate);if($diff->days>0){$return=false;}else{$return=tru

php - 未捕获的异常 'Exception' 消息为“DateTime::__construct():

我在输出在我的PHP文件中创建的日期时遇到问题。我一直在关注如何制作一个真正的Basic-CMS平台的教程,以帮助我了解databases和PHP的一些基础知识,一切都已经完成一切顺利,直到我尝试输出页面的创建日期。这是我得到的错误Fatalerror:Uncaughtexception'Exception'withmessage'DateTime::__construct():Itisnotsafetorelyonthesystem'stimezonesettings.Youare*required*tousethedate.timezonesettingorthedate_defa