如何在php中获取日期格式

如何在php中获取日期格式,php,datetime,datetime-format,Php,Datetime,Datetime Format,我正在对这个方法进行单元测试 function stripTime($datetime) { return new \DateTime($datetime->format('Y-m-d')); } 我想测试返回的输出(日期)是否具有正确的格式Y-m-d 例如: $actual = $this->stripTime(new \DateTime); $this->assertEqual('Y-m-d', $actual->getFormat()); 我知道get

我正在对这个方法进行单元测试

function stripTime($datetime) {
    return new \DateTime($datetime->format('Y-m-d'));
} 
我想测试返回的输出(日期)是否具有正确的格式
Y-m-d

例如:

$actual = $this->stripTime(new \DateTime);
$this->assertEqual('Y-m-d', $actual->getFormat());

我知道
getFormat
方法不存在,但我需要类似的东西。

您的函数返回一个
DateTime
对象,所以测试没有意义。最好使用
assertInstanceOf
检查它是否是DateTime对象,并且它是否将时间设置为默认时间,而不是原始
DateTime
对象的时间

根据您的系统设置,该默认值可能是创建对象时的服务器时间、当前时区的00:00:00(系统默认值或由
date\u default\u timezone\u set()
)设置)或格林尼治标准时间的00:00:00

如果您想完全控制该功能,请在函数中指定:

function stripTime($datetime) {
    return new \DateTime($datetime->format('Y-m-d 00:00:00'), new \DateTimeZone('GMT'));
}

您应该尝试自己编写代码。如果您有问题,请发布您尝试过的内容,并清楚解释哪些内容不起作用,然后提供。读一个好问题。一定要阅读。为什么要传递一个日期时间,然后再创建另一个日期时间?这没有道理。因为日期时间没有格式。它只能够返回指定格式的字符串。或者换句话说:您认为getFormat()可以返回什么?@Jeff该函数仅使用传入对象的日期部分(即不是时间)创建一个新的DateTime对象。正如函数名所示,它会剥离时间。啊,好的。因此,它基本上将小时、分钟和秒设置为默认值。请注意,$actual对象仍将具有这些参数。只设置为当前时间。是的,我也考虑使用
assertInstanceOf
进行测试,但我希望在
stripTime
方法中设置更多关于格式的控制…没有格式。
DateTime
对象不存储任何格式。它在内部变量中存储日、月、年、小时、分钟、秒、微秒、时区等。仅当您调用
$datetime->format('Y-m-d')是以您请求的格式呈现的那些内部变量。该格式不存储在内部,因为它仅用于在某一时刻呈现值。