DATETIME_TIMESTAMP是否仅显示数字?需要输入日期和时间

时间:2016-03-10 作者:Foolish Coder

我使用CMB2和以下代码选择日期;时间:

$cmb->add_field( array(
        \'name\' => __( \'Test Date/Time Picker Combo (UNIX timestamp)\', \'cmb2\' ),
        \'desc\' => __( \'field description (optional)\', \'cmb2\' ),
        \'id\'   => $prefix . \'datetime_timestamp\',
        \'type\' => \'text_datetime_timestamp\',
    ) );
该代码在管理面板中为我提供了以下信息:

date and time admin

要检索此元数据,我使用以下代码:

$text = get_post_meta( get_the_ID(), \'_cmb2_event_date_prefix_datetime_timestamp\', true )
echo esc_html( $text );
但这给了我一个如下的数字,而不是我在管理面板中选择的日期和时间。

1457368800
为什么会这样?我怎样才能得到我在那个元框中选择的日期和时间。

3 个回复
最合适的回答,由SO网友:Adam 整理而成

CMB2的日期/时间相关字段类型将其所有值作为Unix时间戳存储在数据库中,但text_datetime_timestamp_timezone 它将其值存储为序列化的DateTime对象。

  • text_date_timestamp 日期选择器(UNIX时间戳)text_datetime_timestamp 文本日期/时间选择器组合(UNIX时间戳)text_datetime_timestamp_timezone 文本日期/时间选择器/时区组合(序列化日期时间对象)
请参阅:https://github.com/WebDevStudios/CMB2/wiki/Field-Types

您在metabox中看到的是从Unix时间戳到人类可读格式的转换,我相信您可以使用date_format 呼叫时按键$cmb->add_field().

在您的情况下,只需通过PHPdate() 函数可根据需要格式化结果。

示例:

$text = get_post_meta( get_the_ID(), \'_cmb2_event_date_prefix_datetime_timestamp\', true )
echo date(\'Y-m-d H:i:s A\', $text ); // results in 2016-03-07 08:40:00 AM
请参阅PHP的文档date() 用于格式化说明的函数:

SO网友:kraftner

你就快到了。你看到的号码是一个叫Unix Timestamp.

您可以使用date_i18n 像这样:

<?php echo date_i18n(get_option( \'date_format\' ), $text); ?>

SO网友:Pieter Goosen

CMB2似乎正在以unix时间戳格式保存日期,这是一件非常好的事情。当您需要根据日期对数据进行排序或搜索时,这使得排序和搜索变得轻而易举。

将unix时间戳转换为任何需要的格式非常容易。从PHP 5.3开始,您可以使用DateTime class 对于这些类型的转换

$text = get_post_meta( get_the_ID(), \'_cmb2_event_date_prefix_datetime_timestamp\', true );
$date = DateTime::createFromFormat( \'U\', $text );
echo $date->format( \'d/m/Y H:i\');
只要确定输出格式,我们在南非读到03/07/2016 2016年7月3日,我知道一些国家将其解读为2016年3月7日。如果是后者,则将格式更改为m/d/Y H:i

相关推荐

如何在WordPress开发中添加带有ACF自定义字段ID的自定义metabox字段

我是wordpress开发的新手,我在我的项目中安装了高级自定义字段插件,并创建了两个文本字段名称&;我还创建了一个插件,可以在帖子中创建一个带有文本框的元框。现在在帖子中,我将获得自定义字段名称(&A);电子邮件和我的自定义元框旁边将出现,但我必须将我的元框附加到名称字段旁边,即在名称字段和电子邮件字段之间。我的metabox代码如下。请任何人帮帮我//Creating the custom meta box function my_notice_meta_box() {