我有一个引导日期选择器,进入了我的一种表单,在其中以这种格式显示日期:
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
以便能够将其保存到我的日期表列中。
答案 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()
的第二个参数。