我目前正在开发一个管理电子商务网站交付规则的应用程序。我需要测试一周中的某些天和一天的时间来测试他们有不同的交付规则。不幸的是,我正在使用多个其他项目的服务器上工作,因此无法编辑操作系统时间/日期。
类似于date_default_timezone_set可以定义时区的方式,设置脚本中所有日期/时间函数使用的默认时区。我可以在脚本开头运行以完全定义时间和日期并全局应用吗?我真的想测试圣诞节时间。
答案 0 :(得分:0)
我不知道PHP的任何此类功能。据我所知,这些信息直接来自操作系统。
为了简化测试,您可以采用一种方法来获取当前日期/时间戳。这样可以进行更简单的单元测试。
例如,如果您需要在函数中的某个位置获取当前日期。
实用程序类:
class DateUtility {
public static function getCurrentDate() {
if (!Config::get('debug')) {
return date('j-M-Y');
}
return date('j-M-Y', mktime(0, 0, 0, Config::get('debug-month'), Config::get('debug-day'), Config::get('debug-year'));
}
}
使用示例:
$date = DateUtility::getCurrentDate();
set_delivery_date($date);
请注意,此示例极为简化。你很可能需要在你的系统中有一个更通用的实现,特别是如果你经常处理日期,时区和类似的东西。另请注意,如果您在MySQL(或类似)中使用NOW()
等函数,则需要特别处理。