帝国论坛帝国网站管理系统交流区帝国CMS 7.5与8.0专版[已解决]日期型字段的判断及显示问题 【本版专题贴子】  
主题:[已解决]日期型字段的判断及显示问题 [加入收藏夹]   

overstep
用户头衔:举人

精华贴   :0
发贴数   :421
经验值   :1747
注册时间:2010-05-09
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[已解决]日期型字段的判断及显示问题
自定义一个日期型字段“data”,初始值0000-00-00。
添加信息时,有的有完整年月日,有的信息只有年份或年份+月份,有的不知道时间,需在内容模板分三种情况判断显示。

1、当data值为0000-00-00,则前台显示为“未知”,如有值则显示为“XXXX年XX月XX日”。
这一步已实现,代码如下:
<?php
if($navinfor[data]=='0000-00-00')
{
?>
未知
<?
}
else
{
?>
<?=format_datetime($navinfor[data],'Y')?>年<?=format_datetime($navinfor[data],'m')?>月<?=format_datetime($navinfor[data],'d')?>日
<?
}
?>

2、当data值只有年份,则前台显示为“XXXX年”,没能实现,下面代码错误:
<?php
if($navinfor[data],'Y'=='0000')
{
?>
未知
<?
}
else
{
?>
<?=format_datetime($navinfor[data],'Y')?>年
<?
}
?>

3、当data值有年份+月份,则前台显示为“XXXX年XX日”,没能实现,下面代码错误:
<?php
if($navinfor[data],'m'=='00')
{
?>
<?=format_datetime($navinfor[data],'Y')?>年
<?
}
else
{
?>
<?=format_datetime($navinfor[data],'Y')?>年<?=format_datetime($navinfor[data],'m')?>月
<?
}
?>


请问:2、3种该怎么始现?

[该贴被修改 1 次,最后修改时间 2025-04-04 21:25:52 ]



2025-04-04 10:06:29 已设置保密 顶部 回复 引用 报告 编辑 删除

artery
用户头衔:举人

精华贴   :0
发贴数   :161
经验值   :840
注册时间:2006-01-08
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

<?php
$data = $navinfor['data'];

// 判断未知
if ($data == '0000-00-00') {
    echo '未知';
} else {
    $year = date('Y', strtotime($data));
    $month = date('m', strtotime($data));
    $day = date('d', strtotime($data));

    // 年份为0000 或空,判断为未知
    if ($year == '0000') {
        echo '未知';
    }
    // 只有年份
    elseif ($month == '00' || $month == '01' && $day == '01') {
        echo $year . '年';
    }
    // 年+月
    elseif ($day == '00' || $day == '01') {
        echo $year . '年' . $month . '月';
    }
    // 年+月+日
    else {
        echo $year . '年' . $month . '月' . $day . '日';
    }
}
?>



_/_/_/_/ 我的签名就是这么不一样 ^_*
_/_/_/_/ 在下的小站:ARTERY.cn
2025-04-04 12:52:06 已设置保密 顶部 回复 引用 报告 编辑 删除

overstep
用户头衔:举人

精华贴   :0
发贴数   :421
经验值   :1747
注册时间:2010-05-09
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]
[求助]
代码跑通了,完全正确,感谢!

但出现两个问题:

1、如只知道年份为2022年,添加信息时格式为2022-00-00,这时前台却显示为2021年11月30日。

2、如只知道年份和月份为2022年6月,添加信息时格式为2022-06-00,这时前台却显示为2022年05月31日。

请教该如何处理?




2025-04-04 15:07:26 已设置保密 顶部 回复 引用 报告 编辑 删除

overstep
用户头衔:举人

精华贴   :0
发贴数   :421
经验值   :1747
注册时间:2010-05-09
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 4 楼]

3、如这条信息的准确时间是2022年6月1日,添加时格式为2022-06-01,但前台只显示为2022年6月,也就是说所有1号的信息都不能完整显示到“日”




2025-04-04 15:26:14 已设置保密 顶部 回复 引用 报告 编辑 删除

artery
用户头衔:举人

精华贴   :0
发贴数   :161
经验值   :840
注册时间:2006-01-08
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 5 楼]

说不好,反正逻辑是没错的,你试试这个:

<?php
$data = $navinfor['data']; // 假设$data格式是 YYYY-MM-DD

// 处理未知时间
if ($data == '0000-00-00') {
    echo '未知';
} else {
    list($year, $month, $day) = explode('-', $data);

    // 只有年份
    if ($month == '00') {
        echo $year . '年';
    }
    // 只有年份和月份
    elseif ($day == '00') {
        echo $year . '年' . (int)$month . '月';
    }
    // 完整日期
    else {
        echo $year . '年' . (int)$month . '月' . (int)$day . '日';
    }
}
?>


我刚改一了一下,你试试

[该贴被修改 1 次,最后修改时间 2025-04-04 15:32:08 ]


_/_/_/_/ 我的签名就是这么不一样 ^_*
_/_/_/_/ 在下的小站:ARTERY.cn
2025-04-04 15:29:04 已设置保密 顶部 回复 引用 报告 编辑 删除

overstep
用户头衔:举人

精华贴   :0
发贴数   :421
经验值   :1747
注册时间:2010-05-09
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 6 楼]

原帖由 artery 于 2025-04-04 15:29:04 发表
说不好,反正逻辑是没错的,你试试这个:

<?php
$data = $navinfor['data']; // 假设$data格式是 YYYY-MM-DD...



这次完全正确,非常感谢!





2025-04-04 16:06:36 已设置保密 顶部 回复 引用 报告 编辑 删除

artery
用户头衔:举人

精华贴   :0
发贴数   :161
经验值   :840
注册时间:2006-01-08
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 7 楼]

原帖由 overstep 于 2025-04-04 16:06:36 发表
这次完全正确,非常感谢!

帝国CMS圈高手林立,我只是个小虾米,不过大家你帮帮我我帮帮你,不就全搞好了嘛,请传递助力!!

[该贴被修改 1 次,最后修改时间 2025-04-04 16:29:38 ]


_/_/_/_/ 我的签名就是这么不一样 ^_*
_/_/_/_/ 在下的小站:ARTERY.cn
2025-04-04 16:28:55 已设置保密 顶部 回复 引用 报告 编辑 删除

overstep
用户头衔:举人

精华贴   :0
发贴数   :421
经验值   :1747
注册时间:2010-05-09
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 8 楼]

原帖由 artery 于 2025-04-04 16:28:55 发表

帝国CMS圈高手林立,我只是个小虾米,不过大家你帮帮我我帮帮你,不就全搞好了嘛,请传递助力!!


说得太好了,帝国除了程序好,还有这群老伙计,一直在相互帮衬




2025-04-04 20:43:52 已设置保密 顶部 回复 引用 报告 编辑 删除

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1