草庐IT

DATETIME_FORMAT

全部标签

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 - number_format() php 删除尾随零

如果数字不是float/小数,number_format()是否有办法省略小数位?例如,我想要以下输入/输出组合:50.8=>50.850.23=>50.2350.0=>5050.00=>5050=>50有没有办法只用一个标准的number_format()来做到这一点? 最佳答案 您可以将0添加到格式化字符串中。它将删除尾随零。echonumber_format(3.0,1,".","")+0;//3更好的解决方案:上述解决方案不适用于特定的语言环境。所以在这种情况下,您只需将数字类型转换为float数据类型。注意:在将类型转换为

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 - 如何在 PHP 中将日期增加 1(天/年)?

我有一个日期存储在一个数组中:$this->lines['uDate']日期的格式不固定。我可以用这个改变:define('DATETIME_FORMAT','y-m-dH:i');如何将我的uDate增加一定的天数或年数?我的问题与这个有关:incrementdatebyonemonth但是,在我的例子中,日期格式是动态的。那么,我可以这样做吗?$time=$this->lines['uDate'];$time=date(DATETIME_FORMAT,strtotime("+1day",$time));$this->lines['uDate']=$time;

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 - 使用 number_format 添加千位分隔符

我试图非常简单地获取变量$output中的数字,并将其转换为带有千位分隔符的数字。它当前输出的数字是49995,但我希望它显示为49,995。遇到了一些麻烦。帮忙?functiontwitter_followers($user='mytwitterusername'){//BuildTwitterapiurl$apiurl="http://api.twitter.com/1/users/show.json?screen_name={$user}";//cacherequest$transient_key=$user."_twitter_followers";//Ifcached(tra