嘿,我在为约会的形式而挣扎.我需要调整wordpress项目中某些日期的显示.

Its not a duplicate of 100 I tried the suggestion over there and its not working with that specific date format.

我得到的是D, d. MM yyyy格式的german date,看起来像这样:Fr, 6. Mai 2022

我想把它转换成yyyy-mm-dd=2022-05-06,但我无法让它工作.我曾try 使用date_parse_from_formatdate_create_from_format,但由于德国的月和日名称,它似乎失败了.

$date_german = 'Fr, 6. Mai 2022';
$date_english = 'Fri, 6. May 2022';
print_r(date_create_from_format('D, d. F Y', $date_german)); // doesn't work
print_r(date_create_from_format('D, d. F Y', $date_english)); // works ()

IntlDateFormatter的又一次try

$date = 'Fr, 6. Mai 2022';
$formatter = new IntlDateFormatter("de_DE", IntlDateFormatter::SHORT, IntlDateFormatter::NONE);
$formatter->setPattern('D, d. F Y');
$unixtime=$formatter->parse($date);
$datetime=new DateTime();
$datetime->setTimestamp($unixtime);
echo $datetime->format('Y-m-d');

也不起作用,它返回:1970-01-01,因为$unixtime是空的?

我还try 在格式化之前将locale设置为de_de,但仍然存在相同的问题.

推荐答案

我认为正确的方法是使用IntlDateFormatter,但是你使用了错误的常量格式.

这应该是有效的:

$date = 'Fr, 6. Mai 2022';
$formatter = new IntlDateFormatter("de_DE", IntlDateFormatter::SHORT, IntlDateFormatter::NONE);
$formatter->setPattern('EEEEEE, d. MMM y');
$unixtime=$formatter->parse($date);
$datetime=new DateTime();
$datetime->setTimestamp($unixtime);
echo $datetime->format('Y-m-d');

intl的常数列表为https://unicode-org.github.io/icu/userguide/format_parse/datetime/

Php相关问答推荐

如何在搜索域名时重定向到登陆页?

如何在WordPress中为特定自定义帖子类型自定义URL struct

使用WooCommerce本机产品短码时不考虑价格筛选(_SHORT CODE)

从WooCommerce购物车和 checkout 页面自定义发货标签

PHP:PHP手册-Manual

列出所有WooCommerce处理订单中的产品数量,SKU和品牌

Rappasoft Datatables V2(我想在另一个表具有相同值列时显示数据)

在WooCommercestore 页面上显示库存产品属性的值

强制客户在注册时 Select WooCommerce角色

使用 PHP,我可以将 foreach 语句放入瞬态中吗?

WooCommerce:如果购物车中已存在产品,则增加购物车商品数量

为什么 debug_backtrace() 不返回任何内容?

显示时间范围内的可用空位,同时考虑已预订的空位

使用来自 PHP 表单的数据更新 xml 命名空间

Laravel 模型将日期保存为空

PHP Loop 在迭代中使用修改后的数据

Docker: unixodbc.h 没有这样的文件或目录.已安装 unixodbc-dev 时出现pecl install sqlsrv错误

获取具有所有特定相关模型的模型

如何在 Laravel 9 中判断异常是否可报告?

try 在 Laravel Blade 上显示值时出现未定义的变量 X 问题