将$ _REQUEST的日期格式更改为另一种:Mer。 2019年1月23日至2019年1月23日

时间:2019-01-19 10:14:17

标签: php mysql

我有一个引导日期选择器,进入了我的一种表单,在其中以这种格式显示日期:

D. d MM yyyy (displayed : Mer. 23 Janvier 2019)

由于我无法以这种格式将日期保存到表中,因此在将日期保存到表列并希望更改其格式之前,我会用$ _REQUEST获取发送的值。

我尝试过:

$deliverydate = $_REQUEST['delivery_date'];
$deliverydate_conv = $deliverydate->format('Y-m-d');

or

$deliverydate_conv = $deliverydate->format('Y-mm-dd');

但是当我

dd($deliverydate);

该值,然后我得到一个错误:

Call to a member function format() on string

我也尝试过:

        $deliverydate = $_REQUEST['delivery_date'];
        $deliverydate_conv = date("m-d-Y", strtotime($deliverydate));

返回日期,但:

01-01-1970

我的代码是:
    公共函数hook_before_add(&$ postdata){

# START POPULATE the deliverydate FIELD

# QUERY
# SQL : GET the deliverydate FIELD

$deliverydate = $_REQUEST['delivery_date'];
$deliverydate_conv = date("m-d-Y", strtotime($deliverydate));
dd($deliverydate);

# UPDATE THE deliverydate FIELD WITH THE RETURNED VALUE

DB::table('orders')
->where('orderID', '=', $id)
->update(array('deliverydate' => $deliverydate_conv));

# END POPULATE the deliverydate FIELD

}

我想将我的代码转换为:

2019-01-23

以便能够将其保存到我的日期表列中。

1 个答案:

答案 0 :(得分:1)

在尝试解析本地化的日期字符串时,您将需要使用Intl PHP扩展中的类,确保已安装该类。

您可以使用IntlDateFormatter类来定义可以理解法语日期的格式化程序。然后,告诉它您使用的日期格式,最后解析日期。它将产生一个可以与date()一起使用的Unix时间戳。

$formatter = new IntlDateFormatter("fr_FR", IntlDateFormatter::NONE, IntlDateFormatter::NONE);
$formatter->setPattern('eee dd MMMM y');

$time = $formatter->parse("Mer. 23 Janvier 2019");

$date = date('Y-m-d', $time);

您可以使用以下标志将模式更改为适合您需要的模式:http://userguide.icu-project.org/formatparse/datetime

date()使用它们作为格式http://php.net/manual/en/function.date.php

您可以在此站点上测试上面的代码:http://www.writephponline.com

根据您的情况,您需要解析$deliverydate并将其返回值用作date()的第二个参数。