我遇到了一个奇怪的问题,它正在破坏一个发票脚本。我的付款日期为2019年8月31日,那么此人将在每周的同一天付款,这意味着这将是每个星期六。但是,当我用l格式化时,将其作为新的DateTime对象输入时,它表示星期日。 PHP是7.1
$fpd = new DateTime( date( 'Y-m-d 00:00:00', strtotime( '2019-08-31' ) ) );
var_dump( $fpd ); // returns 2019-08-31 00:00:00.000000 in the date section
echo $fpd->format( 'l' ); returns Sunday
怎么回事?这就是我吗?如果我格式化日期以显示得到此日期的日期(假设$ fpd如上)
echo $fpd->format( 'g:ia \o\n l jS F Y' ); returns 12:00am on Sunday 1st September 2019
如此困惑,怎么可能在24小时后的8月31日0h0m?
谢谢
编辑: 我应该指出我在英国使用WAMP64。我尝试使用php 7.0,但结果相同,由于代码符合php 7,因此php 5.6不是一个选项。我尝试只使用'Y-m-d',但是无论如何它可以将时间保存在DateTime对象中
$fpd = {DateTime)[3]
date => "2019-08-31 00:00:00.000000",
timezone_type => {int}3,
timezone => "Europe/London"
$fpd->format( 'l' ) still shows Sunday
进一步编辑: 将上面的代码中的(字符串)更正为var_dump。 在其自己的test.php文件中运行此独立程序可以正常工作,并将日期显示为星期六,但它使用的是UTC时区。
答案 0 :(得分:0)
这将返回经过测试的星期六(Php 7.3)
public function up()
{
Schema::table('questions', function (Blueprint $table) {
$table->dropForeign('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->change();
});
}
public function down()
{
Schema::table('questions', function (Blueprint $table) {
$table->dropForeign('user_id');
$table->foreign('user_id')->references('id')->on('users')->change();
});
}
答案 1 :(得分:0)
因此,由于今天在时钟改变之后,才发现数学是错误的。我从头开始删除了所有代码,现在代码可以正常工作。指望@davidev和@Tschallacka指出正确的方向