我在WordPress中有一个自定义博客模块。允许用户在配置模块时指定所需的任何PHP日期格式。例如'j m Y'。
该模块在单独的行上输出日,月和年。当前默认使用'd F Y'格式。这样,2018年7月6日将显示如下:
06
7月
2018
<?php
// If we have chosen to show a date, get individual date components for style 4
if ( 'on' === $show_date ) {
$ci_post_date = get_the_date( );
$ci_post_day = date('d', strtotime( $ci_post_date ) ); // 01 - 31 day format
$ci_post_month = date('M', strtotime( $ci_post_date ) ); // 3 character month format (Jan - Dec)
$ci_post_year = date('Y', strtotime( $ci_post_date ) ); // 4 digit year format
?>
<div class="ci-date post-meta">
<span class="ci-day"> <?php echo $ci_post_day ?> </span>
<span class="ci-month"><?php echo $ci_post_month ?></span>
<span class="ci-year"> <?php echo $ci_post_year ?> </span>
</div>
<?php
}
上面的跨度通过CSS格式化以显示在单独的行上。这还允许用户为每个日期部分使用自己的自定义CSS。
还有一个变量$meta_date
,它将保存用户提供的日期格式字符串。但是我不知道如何提取每个日期组件提供的格式,以便我可以正确地回显它。
我无法弄清楚如何根据用户提供的格式字符串来格式化这三行。我在所有PHP文档中以及在Stack中看到的所有示例均假定日期格式已知。如果可以,请进行硬编码。
我想使用用户提供的格式字符串在一行中显示月份中的某天。以此类推,每行的月份和年份都是如此。
因此,如果用户提供了上面的示例j m Y
格式,则我需要能够这样显示日期:
6
07
2018
我不知道如何查看日期格式字符串的每月的哪一天部分,然后以这种格式显示(仅)每月的某天。
例如,如何提取用户提供的格式的日期部分,以便修改此行:
$ci_post_day = date('d', strtotime( $ci_post_date ) ); // 01 - 31 day format
我的问题是,如果用户在当月的一天中提供了另一种格式,那么如何确定上一行中的'd'
会使用什么值。