dede时间戳如何转化?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 DEDE建站 正文

下面我将从 基础转换DedeCMS 模板标签常用场景自定义函数 四个方面,为你详细讲解如何进行时间戳的转化。

dede 时间戳转化
(图片来源网络,侵删)

基础:PHP 的日期函数

无论在 DedeCMS 的哪里处理时间戳,核心都是 PHP 的两个函数:

  • date(): 将 Unix 时间戳格式化为可读的日期时间字符串。
  • strtotime(): 将任何英文文本的日期时间描述解析为 Unix 时间戳。

date() 函数格式: date(string $format, int $timestamp = time())

  • $format: 定义输出格式的字符串。
    • Y: 4位数字完整年份 (如 2025)
    • y: 2位数字年份 (如 23)
    • m: 2位数字月份 (如 01-12)
    • d: 2位数字日期 (如 01-31)
    • H: 24小时制小时 (00-23)
    • h: 12小时制小时 (01-12)
    • i: 分钟 (00-59)
    • s: 秒 (00-59)
    • A: 大写的上午和下午 (AM 或 PM)
    • 常见组合:Y-m-d H:i:s (2025-10-27 15:30:00), Y-m-d (2025-10-27), Y/m/d (2025/10/27)
  • $timestamp: 可选参数,要格式化的时间戳,如果省略,则使用当前时间。

在 DedeCMS 模板中转换 (最常用)

在 DedeCMS 的模板文件 (.htm) 中,我们使用 {dede:field} 标签来调用文章或栏目的字段,并结合 PHP 的函数进行修改。

转换文章发布时间 pubdate

文章的 pubdate 字段存储的是 Unix 时间戳。

dede 时间戳转化
(图片来源网络,侵删)

示例1:将时间戳转换为 YYYY-MM-DD HH:MM:SS 格式

{dede:field.pubdate function='date("Y-m-d H:i:s",@me)'/}
  • @me: 这是 DedeCMS 模板中的一个特殊变量,代表当前标签的原始值。@me pubdate 字段的时间戳。
  • function='...': 这是调用 PHP 函数的语法。

示例2:只显示年月日,如 2025-10-27

{dede:field.pubdate function='date("Y-m-d",@me)'/}

示例3:显示 2025年10月27日 这种格式

{dede:field.pubdate function='date("Y年m月d日",@me)'/}

示例4:显示 10/27/2025 这种美式格式

dede 时间戳转化
(图片来源网络,侵删)
{dede:field.pubdate function='date("m/d/Y",@me)'/}

转换文章更新时间 senddate

senddate 也是 Unix 时间戳,转换方法和 pubdate 完全一样。

{dede:field.senddate function='date("Y-m-d H:i:s",@me)'/}

转换其他字段

任何存储了时间戳的自定义字段或系统字段,都可以用同样的方式处理。

假设你有一个自定义字段 update_time,可以这样转换:

{dede:field name='update_time' function='date("Y-m-d",@me)'/}
  • name='update_time': 指定要操作的字段名。

在 PHP 文件中转换 (后端处理)

如果你在 DedeCMS 的 PHP 文件(如 include/helpers/ 下的文件,或者自定义的模块文件)中处理时间戳,可以直接使用 PHP 函数。

示例1:获取当前时间戳并格式化

<?php
// 获取当前时间戳
$timestamp = time();
// 将时间戳格式化为字符串
$formatted_date = date('Y-m-d H:i:s', $timestamp);
echo $formatted_date; // 输出类似: 2025-10-27 15:30:00
?>

示例2:将字符串转换为时间戳

<?php
$date_string = '2025-10-27 15:30:00';
// 将日期字符串转换为时间戳
$timestamp = strtotime($date_string);
echo $timestamp; // 输出类似: 1698381000
?>

自定义函数 (高级用法)

如果你想在多个地方重复使用同一种时间格式,或者需要更复杂的逻辑,可以自定义一个函数,然后在模板中调用。

步骤1:创建自定义函数文件

include/extend.func.php 文件中添加你的自定义函数,如果这个文件不存在,你可以自己创建一个,DedeCMS 在很多情况下会自动加载这个文件。

// include/extend.func.php
/**
 * 将时间戳转换为友好的时间格式(如:3天前,1小时前)
 * @param int $timestamp Unix时间戳
 * @return string
 */
function friendlyDate($timestamp) {
    if (empty($timestamp)) {
        return '';
    }
    $etime = time() - $timestamp;
    if ($etime < 1) {
        return '刚刚';
    }
    $interval = array (
        12 * 30 * 24 * 60 * 60  => '年前',
        30 * 24 * 60 * 60       => '个月前',
        7 * 24 * 60 * 60        => '周前',
        24 * 60 * 60            => '天前',
        60 * 60                 => '小时前',
        60                      => '分钟前',
        1                       => '秒前'
    );
    foreach ($interval as $secs => $unit) {
        $d = $etime / $secs;
        if ($d >= 1) {
            $r = round($d);
            return $r . $unit;
        }
    }
}

步骤2:在模板中调用自定义函数

你可以在任何模板中使用这个 friendlyDate 函数了。

{dede:field.pubdate function='friendlyDate(@me)'/}

如果文章发布时间是 2 小时前,这段代码就会直接显示 "2小时前"。


场景 方法 示例
模板中转换 使用 {dede:field} 标签的 function 属性 {dede:field.pubdate function='date("Y-m-d",@me)'/}
PHP文件中转换 直接使用 PHP 的 date()strtotime() $date = date('Y-m-d', $timestamp);
复杂或重复格式 extend.func.php 中自定义函数,然后在模板调用 {dede:field.pubdate function='friendlyDate(@me)'/}

掌握了这些方法,你就可以在 DedeCMS 中自如地处理所有与时间戳相关的需求了。

-- 展开阅读全文 --
头像
织梦如何修改数据库?
« 上一篇 04-14
织梦怎么连接数据库
下一篇 » 04-14

相关文章

取消
微信二维码
支付宝二维码

目录[+]