php网站中发表文章后标题后面怎么显示日期能具体最好谢谢

  1. AutoCMS
  2. /
  3. 建站资讯
  4. /
  5. 网站
logo
王茜芳

网站  2026-09-23 11:00:02   451

php网站中发表文章后标题后面怎么显示日期能具体最好谢谢

在PHP网站里,文章发表后想在标题后面跟一个日期,做法不复杂,关键看你的数据表里有没有存发布时间字段。一般文章表会有 created_at、post_date、add_time 这类字段。标题后面显示日期,无非就是把数据库里这个字段取出来,格式化后拼到标题旁边。

先看原生PHP的写法。假设你的文章表叫 articles,里面有 id、title、content、created_at,created_at 是 datetime 类型。列表页可以这样写:

```php
    date_default_timezone_set(''Asia/Shanghai'');
  $pdo = new PDO(''mysql:host=localhost;dbname=test;charset=utf8mb4'', ''root'', ''你的密码'');
  $stmt = $pdo->query("SELECT id, title, created_at FROM articles ORDER BY created_at DESC");
  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
   $date = date(''Y-m-d'', strtotime($row[''created_at'']));
   echo ''

'' . htmlspecialchars($row[''title'']) . ''

'';
  }
  ?>
  ```

如果 created_at 存的是 Unix 时间戳,比如 int(10) 类型,那就不要用 strtotime,直接 date(''Y-m-d'', $row[''created_at'']) 就行。如果显示出来是 1970-01-01,多半是字段类型判断错了,或者字段为空。可以先 var_dump($row[''created_at'']) 看看。

文章详情页也一样,只是取一条:

```php
    $id = intval($_GET[''id'']);
  $stmt = $pdo->prepare("SELECT title, created_at FROM articles WHERE id = ?");
  $stmt->execute([$id]);
  $article = $stmt->fetch(PDO::FETCH_ASSOC);
  echo ''

'' . htmlspecialchars($article[''title'']) . '' '' . date(''Y年m月d日'', strtotime($article[''created_at''])) . ''

'';
  ?>
  ```

日期格式可以按自己喜好改。date(''Y-m-d'') 是 2025-03-21,date(''Y年m月d日'') 是 2025年03月21日,date(''m-d'') 是 03-21。如果只想显示月日,用 date(''m-d'', ...)。如果想让日期小一点、颜色浅一点,加个 CSS:

```css
  .post-date {
   font-size: 14px;
   color: #888;
   font-weight: normal;
   margin-left: 8px;
  }
  ```

这样标题和日期就在同一行,日期不会抢标题的风头。如果标题太长,日期可能被挤到下一行,可以把标题容器设成 flex:

```css
  .entry-title {
   display: flex;
   align-items: baseline;
   gap: 8px;
   flex-wrap: wrap;
  }
  ```

如果你用的是 WordPress,那更简单。在主题模板里找到输出标题的地方,比如 index.php 或 single.php,把原来的 `` 改成:

```php
  


  
  
  


  ```

详情页就用 h1。如果不想改模板,也可以用 the_title 过滤器,让所有文章标题自动带上日期:

```php
  function add_date_to_title($title) {
   if (!is_admin() && in_the_loop() && (is_home() || is_archive() || is_single())) {
   $title .= '' '';
   }
   return $title;
  }
  add_filter(''the_title'', ''add_date_to_title'');
  ```

注意要加 is_admin() 和 in_the_loop() 判断,不然后台文章列表、导航菜单里的标题也可能被加上日期。feed 里如果不想显示,也可以再加判断。

用 ThinkPHP 的话,模板里直接写:

```php
  {$vo.title} {$vo.create_time|date=''Y-m-d'',###}
  ```

如果字段是 datetime,也可以用 strtotime 转一下。织梦、帝国这类 CMS 也类似,找到列表模板里标题输出的位置,在它后面加一个日期标签,或者用系统自带的时间格式化函数。

还有一点,日期放在标题后面,最好用 time 标签包一下,语义更清楚:

```php
  
  ```

搜索引擎能更好地理解这是发布时间。样式上给 time 加个 class 就行。

最后提醒,如果文章刚发表,标题后面显示的日期不对,先检查数据库里存的时间是不是当前时间,再检查 PHP 时区有没有设置。很多服务器默认 UTC,你在中国看到的时间会差 8 小时。在脚本开头加 date_default_timezone_set(''Asia/Shanghai''); 就能解决。如果数据库存的是 UTC,而你想显示北京时间,可以用 date(''Y-m-d'', strtotime($row[''created_at'']) + 8*3600)。不过更规范的做法是存 UTC,显示时再转。