织梦CMS如何用JS获取当前时间?

99ANYc3cd6
预计阅读时长 19 分钟
位置: 首页 织梦建站 正文

在任意HTML页面中获取客户端当前时间(最常用)

这是最常见的需求,比如在页脚显示“今天是2025年10月27日”,或者在页面上动态显示一个时钟,这种时间是从用户浏览器获取的,即客户端时间

织梦cms获取时间js
(图片来源网络,侵删)

实现方法: 直接编写JavaScript代码即可,不需要与织梦后台产生任何交互。

示例1:在页脚显示静态的当前日期

你可以在你的模板文件(如 footer.htm)中,直接加入以下JS代码。

<script>
    // 创建一个新的 Date 对象
    var now = new Date();
    // 获取年、月、日
    var year = now.getFullYear();
    // getMonth() 返回 0-11,所以需要 +1
    var month = now.getMonth() + 1; 
    var day = now.getDate();
    // 为了格式统一,可以在个位数前补0
    month = month < 10 ? '0' + month : month;
    day = day < 10 ? '0' + day : day;
    // 拼接成你想要的格式
    var formattedDate = year + '年' + month + '月' + day + '日';
    // 将时间写入到页面中某个元素里
    // 假设你的页脚有个 id 为 "current-date" 的 <span> 标签
    document.getElementById('current-date').innerText = formattedDate;
</script>
<!-- 在你的HTML模板中放置一个用来显示时间的元素 -->
<footer>
    <p>今天是 <span id="current-date"></span></p>
</footer>

示例2:在页面上显示一个动态走动的时钟

这个例子会每秒更新一次时间,看起来像一个时钟。

<script>
    function updateTime() {
        var now = new Date();
        var hours = now.getHours();
        var minutes = now.getMinutes();
        var seconds = now.getSeconds();
        // 补零操作
        hours = hours < 10 ? '0' + hours : hours;
        minutes = minutes < 10 ? '0' + minutes : minutes;
        seconds = seconds < 10 ? '0' + seconds : seconds;
        var timeString = hours + ':' + minutes + ':' + seconds;
        // 更新页面元素内容
        document.getElementById('clock').innerText = timeString;
    }
    // 首先立即执行一次,避免等待1秒
    updateTime(); 
    // 然后每1000毫秒(1秒)执行一次 updateTime 函数
    setInterval(updateTime, 1000);
</script>
<!-- 在你的HTML模板中放置一个时钟显示元素 -->
<div>当前时间:<span id="clock"></span></div>

获取织梦CMS发布文章的时间(服务器时间)

你可能需要在JS中使用某篇文章的发布时间、更新时间等,这个时间是服务器时间,比客户端时间更可靠,因为用户可能会修改自己电脑的时间。

织梦cms获取时间js
(图片来源网络,侵删)

实现方法: 在织梦的模板文件(如 article_article.htm)中,通过织梦的模板标签 {dede:field} 将PHP的时间变量传递给JavaScript。

示例:获取并格式化文章的发布时间

假设你想在文章页面用JS处理文章的发布时间,比如计算发布至今有多少天了。

步骤1:在模板中准备数据

在你的文章详情页模板文件(通常是 /templets/default/article_article.htm)中,找到 <head> 标签内部,加入以下代码,这里我们将织梦的发布时间 (pubdate) 以JSON格式传递给JS,这样JS可以直接使用。

织梦cms获取时间js
(图片来源网络,侵删)
<head>
    ... 其他head内容 ...
    <script>
        // 使用织梦模板标签获取文章的发布时间(Unix时间戳)
        // {dede:field.pubdate /} 会输出文章发布时的时间戳
        var articlePubDateTimestamp = {dede:field.pubdate /};
        // 如果你需要更新时间,可以使用 {dede:field.updatetime /}
        // var articleUpdateTimeTimestamp = {dede:field.updatetime /};
    </script>
</head>

重要提示{dede:field.pubdate /} 输出的是Unix时间戳(一个10位或13位的数字),这是JS最擅长处理的时间格式。

步骤2:在页面其他地方使用这个时间

现在你可以在页面任何地方的 <script> 标签里使用 articlePubDateTimestamp 这个变量了。

<body>
    <h1>{dede:field.title/}</h1>
    <!-- 用PHP直接显示时间(传统方式) -->
    <p>发布时间(PHP):{dede:field.pubdate function="MyDate('Y-m-d H:i:s',@me)"/}</p>
    <!-- 用JS处理和显示时间 -->
    <p>发布时间(JS处理):<span id="js-pubdate"></span></p>
    <p>距离今天已经过去:<span id="days-ago"></span> 天</p>
    <script>
        // 这里的 articlePubDateTimestamp 变量来自上面的 <head> 部分
        // 创建一个 Date 对象,时间戳的单位是毫秒,所以如果服务器给的是10位时间戳,需要 * 1000
        // 织梦通常给出的是10位时间戳
        var pubDate = new Date(articlePubDateTimestamp * 1000);
        // 格式化成可读字符串
        var formattedPubDate = pubDate.getFullYear() + '-' + 
                               (pubDate.getMonth() + 1) + '-' + 
                               pubDate.getDate();
        // 显示格式化后的发布时间
        document.getElementById('js-pubdate').innerText = formattedPubDate;
        // 计算距离今天过去的天数
        var now = new Date();
        var timeDiff = now.getTime() - pubDate.getTime(); // 毫秒差
        var daysDiff = Math.floor(timeDiff / (1000 * 3600 * 24)); // 转换为天数
        document.getElementById('days-ago').innerText = daysDiff;
    </script>
</body>

在JS中调用织梦的PHP接口获取时间(高级)

这是一种更灵活的方法,如果你的时间数据不是来自当前页面(比如想获取最新文章的发布时间),你可以通过织梦的 arclistlist 标签配合JS来实现,或者调用一个自定义的PHP接口。

方法A:使用织梦的 {dede:arclist}

<script>
    // 使用织梦的 arclist 标签获取最新文章的时间,并隐藏输出
    // 我们只关心它的 JS 数据
    {dede:arclist row='1' channelid='1' typeid='0'}
        // 'function="js"' 会将数据格式化为JS对象
        // 我们只取 pubdate
        var latestArticleTime = "[field:pubdate function='js']";
    {/dede:arclist}
    // latestArticleTime 现在是一个JS可用的字符串,"1698384000"
    // 你可以像场景二一样处理它
    if(latestArticleTime){
        var latestDate = new Date(latestArticleTime * 1000);
        console.log('最新文章发布时间:', latestDate.toLocaleDateString());
    }
</script>

注意:这种方法有一定局限性,arclist 的数据量不宜过大,否则会影响页面加载速度。

总结与推荐

场景 时间来源 推荐方法 优点 缺点
显示当前日期/时钟 客户端浏览器 纯JS代码 简单、快速、不依赖服务器 时间可能被用户篡改
处理文章发布时间 服务器 织梦标签 + JS 时间准确、可靠,与内容强相关 需要修改模板文件
获取动态/非当前页时间 服务器 arclist标签 + JS自定义API 灵活,可获取任意数据 实现稍复杂,可能影响性能

对于绝大多数情况,场景一场景二已经足够满足需求,请根据你的具体需求选择合适的方法。

-- 展开阅读全文 --
头像
织梦CMS安装教程详细步骤是怎样的?
« 上一篇 今天
2025计算机二级c语言题型
下一篇 » 今天

相关文章

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